WordPressで色々といじっていた時にCall to undefined function nocache_headers()が発生し、画面表示ができなくなりました。
構築していたサイト自体の表示もそうですが、管理画面もアクセスしようとするとエラー画面になってしまい焦りました。
エラーメッセージ
ブラウザの画面にどのようなメッセージが表示されたかと言うとこんなメッセージです。
Fatal error: Call to undefined function nocache_headers() in /********/wp-admin/admin.php on line 36
実際にadmin.phpを開いてみました。
require_once dirname( __DIR__ ) . '/wp-load.php';
nocache_headers();
if ( get_option( 'db_upgraded' ) ) {
flush_rewrite_rules();
update_option( 'db_upgraded', false );
nocache_headers()は何者か
nocache_headers()はキャッシュを無効にするためのHTTPヘッダーを出力する関数のようです。
テーマ内の各ページの出力を行う前に使用しなければなりません。とありますね。
実はこのエラーに陥る直前にWordPressで人気記事を表示するためのプラグイン「WordPress Popular Posts」のキャッシュとデータを削除しました。
WordPress Popular Posts
A highly customizable, easy-to-use popular posts plugin!
もちろん変なやり方ではなく、メニューから操作しました。
関係性は分かりませんが、もの凄く関係していそうな気もします。
解決策
wordpressのディレクトリ直下にあるwp-config.phpのif ( ! defined( ‘ABSPATH’ ) ) をコメントアウトして、強制的にABSPATHを設定します。
wp-config.php修正前
/** Absolute path to the WordPress directory. */
if ( ! defined( 'ABSPATH' ) ) {
define( 'ABSPATH', __DIR__ . '/' );
}
wp-config.php修正後
/** Absolute path to the WordPress directory. */
//if ( ! defined( 'ABSPATH' ) ) {
define( 'ABSPATH', __DIR__ . '/' );
//}
その後、もう一度管理画面のURLにアクセスすると問題なく画面が開きます。
画面が開くことが確認出来たら、wp-config.phpでコメントアウトした部分を元に戻しておきましょう。