wordpressページが真っ白になった

長らく更新しないどころか、wordpressのアップデートに失敗してトップページが真っ白になり、面倒で半年以上放置してしまった。
その間、googleからも「反応がないんですけど!」とのお叱りのメールが着たりして、すでにペナルティを受けていそうだったがそれも放置。
今までwordpressのアップデートで失敗したことはなかったのだが、なんとなく、database辺りをいじって直すんだろうなと思いそれが億劫だった。

そして今日、ふと思い立って直すことにした。まずはなんのエラーか調べてみることに。

wordpressのrootにあるwp-config.phpファイル内で、
define(‘WP_DEBUG’, false); を
define(‘WP_DEBUG’, true); にしてエラーメッセージを表示させてみると、2つのプラグインからエラーが。とりあえずこの2つを削除するとサイトが表示された。
こんなに簡単だったらもっと早くやればよかった。

今回の失敗は、最新にアップデートしたwordpressに対応できなかったプラグインが原因のようなので、今後のアップデートの順番は、まずプラグイン、次にwordpressがいいのかも!?

wordpressの高速化 – Photon

 Jetpackは、wordpressのプラグインセットなのだが、いつの間にか機能が増えている。今までは、別にプラグインをインストールして実現していた動作も、Jetpack内に類似のものが含まれていることが多くなった。

 その中の一つに、「Photon」がある。今まで見落としていたのが悔しい。

 「Photon」はWordPress.comを利用した”CDNサービス”(インターネット上にキャッシュを分配する)で、wordpressを高速化させるのだ。設定もなにもいらない。Jetpack内にあるPhotonを探して「有効化」ボタンを押すだけ。

Jetpack「関連投稿」カスタマイズ

●タイトル「関連」を変える
 CSSに書き足す。他に、functions.phpで変える方法もあり、下記その他カスタマイズのリンク先で紹介されている。

.jp-relatedposts em {display: none;}
h3.jp-relatedposts-headline:after {font-size: <strong>22</strong>px;content: "<strong>関連記事</strong>";}

●表示数を変える
 functions.phpに書き足す。

function jetpackme_more_related_posts( $options ) {
    $options['size'] = <strong>6</strong>;
    return $options;
}
add_filter( 'jetpack_relatedposts_filter_options', 'jetpackme_more_related_posts' );

●その他カスタマイズ
Customize Related Posts

wordpressログインページへの不正アクセスを防ぐ

 wordpressは人気の高いCMSなのだが、それゆえに不正アクセスなど攻撃されやすいCMSでもある。

 セキュリティ対策として、「Limit Login Attempts」というwordpressのログイン試行回数を制限できるプラグインを入れていた。
「Limit Login Attempts」解説サイト

 そのプラグインのログを見ると、某弱小運営サイトで何度もアクセスを試みられていて、怖いのは、既にアカウントが割れてしまっていたのだ。もちろん、「admin」なんて一般的に使われるものは使っていない。すぐにパスワードをさらに桁数を増やしたのだが、なんだか不安だ。

 別のサイトでは、Jetpack内にある「プロテクト」を利用している。世界中ののWordPressサイトのクラウドを利用して、悪意のあるIPアドレスを識別・ブロックしてくれるという優れもの。時間が経つほど精度が上がっていくのだ。
Jetpack「プロテクト」解説サイト

 こちらも不正アクセスを試みられているのがわかった。

 「プロテクト」は悪くなさそうだけど、もうちょっとセキュリティ対策をしようか。

 そう思って、ログインページのアクセスをIPで制限することにした。
「wordpressログインページのIP制限」解説サイト

今までIP制限をしなかったのは、自分のネット環境がいつ変わるか分からなかったし、いざ変わるときはきっとバタバタしているので、この辺りを修正するのが面倒だろうと思ったからだ。でも、最近の攻撃数の多さを考えるとそんなことも言ってられなくなった。

というわけで、現在行っているセキュリティ対策は、上記の、ログインページのIP制限と、Jetpack「プロテクト」(念のため)、他にFTPアクセスのIP制限をやっている。

wordpressで新規投稿が出来なくなった!

 相当久しぶりに記事を投稿しようと思い、このサイトの管理画面にログインした。

 投稿する前に、wordpress本体や、多くのプラグインのアップデートをする。wordpressのバージョンは、4.2.2–jaに。

 最新のアップデートは、様子をみつつ、バグ報告がないことを確認してからやっていたが、最近はそれよりセキュリティが心配でさっさとアップデートしていた。面倒だったからというのと、クライアントではなく自分自身が運営しているサイトだったから。

 そして、久しぶりに長い記事を書いたら、「公開」ボタンのところがなにかいつもと違う。「レビュー待ちとして送信」となっていたのだ。 最新バージョンになって仕様が変わったのかな。でも、「下書きとして保存」ボタンは今まで通りあったので、とりあえずここで保存しておくかとクリック。
1

 すると…

 投稿内容が消えてしまった! 下書きとしても保存されていない!

 はぁ、本当に久しぶりに記事を書いたのに…

 何度試してみても投稿できない。途中まで書いて放り投げてあった以前の下書きをちょっと修正して投稿したら、これまで消えてしまった。なんなんだよ、もう。

 今回、なんの確認もせずにアップデートをかけたのは、2つのサイトなのだが、片方は問題なく投稿できて今までとなんらかわらない。なのに、余計なプラグインも入れていない、デーマも付属のものを利用しているこのサイトでバグが発生した。

 他に同様の現象が報告されていないか検索してみた。

 その結果、どうもwordpressのバージョンアップで、文字コードが複数混在してしまったようで、現時点ではまだバグフィックスされたアップデートはでていないようだ。

 いくつか見つけた質問掲示板でも、明らかな解決法はのっていない途中経過だけだった。

 もう面倒だから、バグフィックスが出るまでこのまま放置かな。

 今回の問題は、どうもデータベース内で文字コードが変わってしまったことが原因のようだ。文字コードを直すのはそんなに難しい方法ではないし、ダメだったとしても戻すのが簡単そうだったので試すことにした。ネットで探し出した方法は、php.iniとか、.htaccessとか、前のバージョンに戻すとか、なんか面倒だったのだ。明確に解決した、となっているものでもなかったし。

    【手順】

  • phpMyAdminにログインする。
  • テーブルの「照合順序」が「utf8_general_ci」「ujis_japanese_ci」と混ざっているので、全て「utf8_general_ci」にする。「操作」の左から2番目のアイコン「構造」で変更できる。
  • これだけだと、テーブル自体の照合順序が直っただけ。次に、テーブルの中身の照合順序を直す。左メニューでずらっと並んでいる各テーブルを一つ一つクリックし、フィールドを全てチェックして、「変更(鉛筆アイコン)」をクリック。
  • そこも、「照合順序」が「utf8_general_ci」「ujis_japanese_ci」と混ざっているので、全て「utf8_general_ci」にする。面倒だけど、各テーブル全部やる。

2

これで、とりあえず投稿時のバグは直ったようだ。当分、新規記事は消えてしまってもいいように、外部テキストに保存してから投稿すると思うが。