Call to undefined function nocache_headers()エラーで画面表示不能

WordPress
スポンサーリンク

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
高度にカスタマイズ可能で、使いやすい投稿ウィジェットです。

もちろん変なやり方ではなく、メニューから操作しました。

関係性は分かりませんが、もの凄く関係していそうな気もします。

解決策

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でコメントアウトした部分を元に戻しておきましょう。