ダッシュボードは表示されるが投稿一覧だけが表示されない
pタグの自動整形を停止したいがためにいじっていたら、いきなり投稿一覧と新規追加が真っ白ではありませんか。
この「意図してないけど勝手になっちゃった」感が素人くささ満載ですね。
WordPressに慣れてきて、phpファイルまで手を出すようになると突然やらかしてしまう画面真っ白劇
珍しい?ケースでしょうが、「管理画面のみ」あるいは「公開したページのみ」真っ白ではなくて、私の場合「投稿一覧と公開したページ」がうんともすんとも言わない白銀の世界になってしまいました。
別にデータが消えたわけではないですが、誰かが開いて見たら純白なキャンパスで、サイトが無いと認識されると思うと夜も寝られませんね(寝たけど)
まて、まだ慌てる時間じゃあない。ページが何も表示されない真っ白白すけのときにすることは決まっています。
- 「’WP_DEBUG’,true」によるエラー部分の表示
- 画面が白になる直前までに行っていた作業を思い出す
ステップ1|エラー箇所を表示させる
まず、ここではFFFTPなどサーバーサイドからPHPなどのファイルをダウンロードできること、つまりFTPツールが使用できることを前提に話を進めます。(詳しく触れないのでGoogle先生にきいてください)
ツールを開くとフォルダ「wordpress」をクリックし中に「wp-config.php」というファイルがあります。このファイル開いてデバッグできるようにします。一番下の方にスクロールしていくと下のような内容が出てきますね。
/** * 開発者へ: WordPress デバッグモード * この値を true にすると、開発中に注意 (notice) を表示します。 * テーマおよびプラグインの開発者には、その開発環境においてこの WP_DEBUG を使用することを強く推奨します。 */ define('WP_DEBUG',false); define(中略); /* 編集が必要なのはここまでです ! WordPress でブログをお楽しみください。 */
あとは書いてある通り
define('WP_DEBUG',false);
を
define('WP_DEBUG',true);
と「true」にするとデバッグを楽しめます♪()
たいていは以下のようなエラーが出ますね。
- Parse error: syntax error, unexpected … :PHPの文法の誤り
- Fatal error: Call to undefined function … :関数が定義されていない。
- Fatal error: Cannot redeclare … :定義済みの関数を再定義しようとしたケース。プラグイン同士で同じ関数を定義していた場合など
- Warning: Cannot modify header information … :そのまま処理が続行されるがリダイレクト時にエラーする
今回私が出たエラーは
Fatal error: Call to undefined function wp_cache_get_last_changed() in /var/www/○○hosts/exsample.com/httpdocs/wordpress/wp-includes/class-wp-term-query.php on line 668
という未定義の関数があり呼び出されませんでした、でした。
ステップ2|修正箇所を探す
はじめてだと、どこを修正していけばいいのかさっぱりわかりません。 「wordpress」フォルダの「wp-includes」フォルダの「class-wp-term-query.php」ファイルを開き、668行目(on line 668)を探します。私はNotepad++を使っていますが、行数が表示されるテキストエディタを使用すると作業がぐっと楽です。それか関数「wp_cache_get_last_changed()」の「wp_cache_get_last_changed」部分を「F+Ctrl」キーで検索しても探せます。
探した結果
$last_changed = wp_cache_get_last_changed( 'terms' );
と表示されますが、じゃあこのあとどうするの?とわけがわからなくなります。スペルミスなど見当たらないし…
ググっていくと未定義の関数によるエラーは、function.php内に原因があるとわかりました。function.phpファイルはwordpressの関数が定義されているファイルです。
そういえば思い返してみるとfunction.phpを編集していたので、消去や文字を変えたりなど書き換えたかもしれません。消える直前やファイルの編集をどこまで行ったのかメモするなり記録しておくとよさそうです。
ステップ3|ファイルのバックアップを取っていない場合
なんとファイルのバックアップをとっていなかったので、どこが原因かさっぱりわかりません。
ただし関数の定義がされていないことなので、エラー対象の関数が定義されているコードをネットから探せばいいのです。 ここでは
$last_changed(変数) = wp_cache_get_last_changed( 'terms' )(定義済の関数);
なので
「wp_cache_get_last_changed」
で検索します。さらに待ち構えていたのが英語のサイトではありませんか!日本語では解決方法が載っていません。誰だよWPが誰でも使いやすいとかいったやつ
だがしかし、世の中便利になりま過ぎました!右クリックからの日本語翻訳をすればいいジャマイカ なんて簡単!
利用したサイトはwpseek.comで、wordpressの関数を検索できるサイトです。
ここに
function wp_cache_get_last_changed( $group ) { $last_changed = wp_cache_get( ‘last_changed’, $group ); if ( ! $last_changed ) { $last_changed = microtime(); wp_cache_set( ‘last_changed’, $last_changed, $group ); } return $last_changed; } wpseek.com
と「wp_cache_get_last_changed」の関数定義が記載されているのでfunction.phpに同様の定義が記述されているか探します。(F+Ctrlでね)
無ければ(無いから真っ白なんだけど)、ソースコードをそのままコピペして、FTPツールでアップロードして完了です。 コピーは一番下で問題ないですし、再修正するときにわかりやすいです。
ただし別のfunction関数の「}」閉じかっこ内に入れるとエラーのままなので気を付けてください。 もし連続で関数エラーが出たら、そこも定義が消去してあるので、探して追記していきます。
例えばテーマのCSS編集も真っ白でしたが、 「wp_generate_uuid4();」と「wp_list_sort();」のfucntionを追記してエラーを解決しました。
最後は
define('WP_DEBUG',false);
に戻せば終わりです。
(エラー表示は第三者からも見えるので、ルートパスを使い悪さする人もいるそうです。セキュリティのためにfalseが無難)
おつかれさまでした。