ホーム > 投稿記事 > なんで?WordPressのテンプレート選択でWarning!?

なんで?WordPressのテンプレート選択でWarning!?

投稿日 : 2017年11月21日   更新日 : 2019年10月04日
カテゴリー : WordPress
なんで?WordPressのテンプレート選択でWarning!?の画像

こんにちわ、PHPエンジニアのエンジニア婦人(@naho_osada)です。
私はPHPエンジニアとして6年~の経験があります。WordPressは2年~の経験があります。
ここでは主に過去に納品した案件や自サイト運営(エンジニア婦人ノート)で遭遇したことについて書いています。

突然ですが、開発している最中につまらないことでWarningが出るとめちゃくちゃ腹が立ちますね。

こんなことで止まっている場合じゃないのに!って。

今回はWordPressの固定ページのテンプレート選択でWarningが出た話をします。

最後までこれだ!という発生条件はわからないままとなりましたが、そのときの状況を公開しておきます。

状況

  1. TwentySeventeenをテーマに子テーマを作った。
  2. 固定ページに別途テンプレートを適用させたくて、page-〇〇〇.phpを作った。
  3. なんだかうまく認識されなくてごちゃごちゃテンプレートファイルを作ったり消したりしていたら、テンプレートのセレクトボックスでWarningが出るようになった。file_get_contentsできないって、/wp-includes/class-wp-theme.php
  4. 一旦ログアウトしてみても、ブラウザキャッシュクリアしても、キャッシュクリアプラグインを使ってもダメ

子テーマを作って調整中に起きそうな事案です。

原因と思われるもの

テーマのファイル名から作り出すハッシュがキャッシュとして保存?されていることのようでした。

このハッシュに保存されているキャッシュ情報からテンプレート情報を読んできているので、存在しないテンプレートファイルだと「ないんですけど!」って怒られる仕様…らしい…?

テーマを変えても何してもそれがリセットされませんでした。リセットされてもいいようなものですが…これWordPressのバグじゃない?

対処法

テーマ名からハッシュを作り出しているので、不要なテンプレートを削除した状態でテーマ名を変えました。

テーマ名を変えたことでハッシュが変更され、同時にキャッシュ情報も変更された為、問題がなくなったとみられます。

根本解決にはなっていない気がしますが、この場合は根本解決より対処法で良いでしょう。そこまで突っ込む気にはなりませんでした…

何故子テーマを使うのか

WordPressは、本体でもプラグインでも更新があると更新通知が来て更新できるようになりますね。

テーマも同じです。プラグインよりは見かける頻度が少ないとは思いますが、テーマ更新もちゃんとあります。

そのときにベースとなるテーマのソースを触っている場合、自分で変更した箇所がすべて初期化されます。

対象はプログラムだけじゃありません。CSSも何もかも戻ります。

それを防ぐために、子テーマにしましょうとWordpressはお達しを出しています。

たまに直接テーマを変更してしまって、子テーマですらないのでテーマの更新がかけられない…というパターンを見かけますが、あまり好ましい状態ではないと思います。

基本は良い方に改修されているわけですからね。公式から出されるこう言った更新は放置せずに更新をかけたいところです。

まとめ

  • テーマカスタマイズ中で、固定ページテンプレートの選択でWarningが出てしまったら、思い切って不要なテンプレートを削除して、テーマ名を変えてしまう
  • 恐らくキャッシュが原因

本筋とは関係ないところではまることも、開発者あるあるです。

よくわからないトラブルが起きた時こそ、冷静に対処できるカッコイイプログラマでありたいです。

楽しい物造りを

NaoLight

自分のブログやサイトを、楽しく作ってもらえたら。

プログラムを使って望み通りに、拡張しやすく、自分の思うように。

できたときに、すごく楽しい!と思ったら。

控えめに言って、「最高です」。

NaoLight -NAOT-(なおらいと、なおと、と呼んでください)はそんな思いをカタチにする、WordPressのテーマです。

ご購入はこちらからお願いします(BOOTHへ移動します)。

Nao Light-NAOT-公式サイト



この記事にコメントする

入力エリアすべてが必須項目です。承認制のため、表示までに時間がかかる場合があります。

CAPTCHA


内容を確認の上、コメントをお願いします。