Sumirexxx

今日もiPhone片手に出かけます

WordPressでカスタムフィールド追加しようと思ってmeta.phpをいじってたらブログが表示されなくなった時の対処法 はてなブックマーク - WordPressでカスタムフィールド追加しようと思ってmeta.phpをいじってたらブログが表示されなくなった時の対処法

WordPress

トップ画像

先ほど、30分くらいブログに繋がらなくなるトラブルが起きました。
ブログを初めて4年・・・。今回ばかりはダメかと思いきや、なんとか元に戻すことができました。

※設定ファイルを触る時にはご自分の責任で、気をつけて作業してくださいね。

カスタムフィールドが消えた

最初の現象は、SLPRO Xのカスタムフィールドが消えていたことでした。
Wordpressにカスタムフィールドを表示するには、「wp-includes/meta.php」に何か記述するんだったよなぁ〜と思って、まずはローカルの「wp-includes/meta.php」を確認しました。

修正ファイル置き場
セットするのはここ。function名「is_protected_meta」で検索するとわかりやすい。

function is_protected_meta( $meta_key, $meta_type = null ) {
$protected = ( ‘_’ == $meta_key[0] );

return apply_filters( ‘is_protected_meta’, $protected, $meta_key, $meta_type );
}

この「$protected = ( ‘_’ == $meta_key[0] );」という部分を下記のように書き換えるだけ。

function is_protected_meta( $meta_key, $meta_type = null ) {
$protected = (( ‘_’ == $meta_key[0] ) && ( strpos($meta_key, “_aioseop”) !== 0));

return apply_filters( ‘is_protected_meta’, $protected, $meta_key, $meta_type );
}

しかし、このファイルを本番にあげたことで問題が起こりました。

ブログが表示されなくなった

そんなにおかしいことをしていないはずなのになぜ?そしてもう一つの問題は、これくらいの修正ならバックアップは取らなくても大丈夫だろうという過信でした。

幸いなことに、以前取っておいたバックアップファイルがあったのでそれを使おうとしたのですが、なぜかブラウザのキャッシュを消してもブログが元に戻らない。表示されない。こわい。

原因と思われること

なぜこんなに違うのかはちょっとわからないんですが、ローカルにある「自分のローカルファイル置き場/wp-includes/meta.php」は、53KB/1705行だったのに対し、「本番サーバー/wp-includes/meta.php」は、28KB/1211行でした。
この違いの中に、何か原因があったと思われます。

ちなみにエラーは、meta.phpではなく、「wp-includes/class-we-meta-query.php」ファイルのクラス「WP_Meta_Query」に対しての警告だったようです。

サーバーのファイルをいじろうとしたけど、ちょっと待って。

だんだんと正気を失ってきた私は、サーバーファイルのバックアップがなかったか探しました。すると、DropBoxに毎日とってあるバックアップを見つけることができました。

でもこれは本番用データベースに入っている記事用のバックアップだったのです。
(記事用のバックアップとは違う所を今回は治したかったので意味がない)
そこで、meta.phpをデバッグして探していこうと思いました。が、そこまでするか?もうちょっと考えてみようと一旦落ち着くことに。

一か八かでwordpressを最新に更新してみた。

そもそもの始まりは、カスタムフィールドが消えていたことでした。そしてmeta.phpというのは、wordpressを更新するたびに書き換える必要があるということを思い出したのです。

そしたら、wordpressを更新すれば、元に戻るんじゃ・・・?
そこで本当に無くなったら最悪なファイル(wp-contents)のバックアップが取れていることを確認し、DBの記事用のバックアップを取り、worpdressを最新にしました。

表示された…!

この方法でなんとか無事に元どおり表示することができました。
トップ画像

長いことブログを運用していても、このようにこわい思いをすることがあるんですね。本当に気をつけようと思いました。
あと、wp-contentsだけじゃなくて、できる限りバックアップはとっておこうと思いました。

ちなみにこのあと慎重にmeta.phpを修正し、worpdressの管理画面でカスタムフィールドが表示されるようになりました。

管理画面

SLPRO Xも。

SLPRO X

原因は追いきれていませんが、もう怖くて再現できません…!
今後は気をつけようと思います。

あーよかった。

<