LoginSignup
1

More than 3 years have passed since last update.

posted at

updated at

WordPressでテンプレートファイル(page-xxxx.php)を削除するとエラーが表示される

開発作業中にエラーが表示されて困ったので、行った解決策の備忘録をのせておきます。

WordPressのバージョン

4.9.0

※2017/12/4追記
4.9.1ではこの問題は修正されているので、WordPressのバージョンが低い方はアップデートされることをおすすめします。

問題

不要になったテンプレートファイル(page-xxxx.php)を削除すると、以下のようなエラーが表示される。

Warning: file_get_contents(xxxx): failed to open stream: No such file or directory in /xxxx/wp-includes/class-wp-theme.php on line 1042

※適当に伏せ字にしています
※今回は「page-sitemap.php」というテンプレートファイルを削除しました

管理画面の固定ページ編集画面ではこんなエラーが表示される
1.png

それでも強引に更新しようとすると、白い画面でエラーが表示される
2.png

原因

WordPressのバージョンが4.9.0になってから、テンプレートファイルの階層をキャッシュするようになったらしいです。
そのため、テンプレートファイル(page-xxxx.php)を削除することで、キャッシュに存在していたはずのテンプレートファイルが無いとみなされてエラーが出ていたようです。

英語でよくわからないのですが、以下のチケットで議論されていたみたいです。
https://core.trac.wordpress.org/ticket/42573

ちなみに1時間待つことでキャッシュが更新されてクリアされるみたいですが・・開発作業中にそんな待ってられないですね!

解決策

上記問題に対応するためのプラグインを入れる。
https://gist.github.com/westonruter/6c2ca0e5a4da233bf4bd88a1871dd950

githubの使い方がわからない方のために、念のためやり方をのせておきます。

プラグインの入れ方

  1. 上記サイトの右上の方の「Download ZIP」をクリックしてファイルダウンロード
  2. 解凍したファイルの「wp-42573.php」をWordPressのプラグインディレクトリ(/wp-content/plugins/)の中に移動
    3.png

  3. 管理画面に入りプラグインを有効化
    4.png

余談

一応プラグインの中身を見てみましたが、内容はいたってシンプルで管理画面がロードされるたびにキャッシュをクリアする内容のようです。
4.9.1になればこの問題は修正されるんじゃないかなーと思います。

2017/12/4追記

2017/12/1に更新されたWordPress4.9.1で、この問題も修正されたようです。
(#42573ってところですかね・・)
https://make.wordpress.org/core/2017/11/28/wordpress-4-9-1-scheduled-for-november-29th/

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
1