TL;DR
- WordPressの子テーマは、
style.css
の冒頭にあるコメントブロックで「テーマ情報」を認識してる - ここが消えると、WordPressはそのフォルダをテーマとして認識しなくなる
- 対策:
style.css
に必ず以下を記述する(空行なしで一番上に)
/*
Theme Name: JIN Child
Template: jin
*/
症状
- 昨日まで普通に使えていたのに、管理画面から「JIN-CHILD」子テーマが消えた
- 外観 → テーマに行っても表示されない
- 「アイキャッチ画像」パネルも出てこなくなった
原因
結論から言うと、子テーマの style.css
のヘッダコメントが消えていた。
WordPressは子テーマを認識するときに、style.css
の先頭にあるコメントブロックを読んでいる。
ここに Theme Name
と Template
が無いと、そのフォルダはただのCSS置き場と見なされ、テーマ一覧から消える。
再現例
/* ← これが無くなるとアウト
Theme Name: JIN Child
Template: jin
*/
これを削除した状態で外観 → テーマを開くと、子テーマが一覧から消える。
一度有効化してても、**テーマの再スキャンが走ったタイミング(更新やキャッシュクリアなど)**で急に消えたように見える
解決方法
- FTPまたはファイルマネージャで
wp-content/themes/jin-child/style.css
を開く - 冒頭に以下を追記(必ず空行ナシで先頭)
/*
Theme Name: JIN Child
Template: jin
*/
- 保存 → 管理画面をリロード
- 外観 → テーマに「JIN Child」が復活!
再発防止の工夫
-
style.cssはテーマ情報専用にして、実際のCSSは別ファイルに分ける
// functions.php(子テーマ側) add_action('wp_enqueue_scripts', function(){ wp_enqueue_style('jin-child-extra', get_stylesheet_directory_uri() . '/assets/css/main.css', [], null); });
→
main.css
に本体CSSを書く。style.css
はヘッダコメント+軽い読み込みだけにする -
minifyや最適化ツールで
/* ... */
コメントが消される事故を防げる -
Gitで管理して、
style.css
のヘッダが残ってるかチェックすると安心
まとめ
- 子テーマが突然消えたら、まず
style.css
のヘッダコメントを確認! -
Theme Name
とTemplate
が正しく書かれていないとWordPressはテーマと認識しない - JINに限らず、子テーマは全部同じ仕組みなので他テーマでも応用可能