WordPressで自作テーマを更新したらデザインが消えた話
WordPressでオリジナルテーマを作ってWebサイトを制作していた際、
テーマを更新したところ、サイト全体のデザインが丸ごと別物に変わるという失敗を経験しました。
この記事では、その経験をもとに、
- なぜ自作テーマなのに更新が発生したのか
- Theme NameとText Domainの重要性
- 事故を防ぐための正しいテーマ設計
を整理します。
実際に起きたこと
- 親テーマ(自作テーマ)だけでWebサイトを制作
- デザイン・構造ともに問題なく完成
- WordPress管理画面からテーマ更新を実行
- サイト全体が別のデザインに変化
自分で書いたテンプレートやCSSはすべて消え、
見覚えのないテーマデザインに切り替わっていました。
なぜ「自作テーマ」なのに更新されたのか
原因は、テーマ情報の重複でした。
当時、テーマ名・フォルダ名を
「portfolio」 にしていました。
WordPressはテーマを、
フォルダ名ではなくstyle.cssのヘッダー情報で識別します。
CSS
/*
Theme Name: Portfolio
Text Domain: portfolio
*/このTheme NameやText Domainが
既存の配布テーマと一致していると、
自作テーマでも「同一テーマ」と判断される ことがあります。
その結果、
- WordPressが公式テーマの更新を取得
- テーマ一式を丸ごと上書き
- 自作ファイルがすべて消える
という事態が起きました。
WordPressのテーマ更新の仕組み
WordPressのテーマ更新は、差分更新ではありません。
- 更新時はテーマフォルダを丸ごと置き換え
- 変更点を残す仕組みは存在しない
- 上書きされたら元には戻らない
そのため、
更新対象として認識された時点でアウトです。
Text Domainとは?
Text Domainは、WordPressで翻訳(多言語化)を識別するための一意なIDです。
PHP
<?php _e('続きを読む', 'my-portfolio-theme'); ?>WordPressは、このText Domainをキーにして
翻訳ファイルやテーマ情報を紐付けます。
重要なポイント
- テーマごとに必ず一意である必要がある
- 他テーマと被ると、更新事故の原因になる
- 翻訳しなくても必ず指定する
Theme NameとText Domainの違い
| 項目 | Theme Name | Text Domain |
| 用途 | 管理画面表示 | 内部識別・翻訳 |
| 人が読む | ○ | △ |
| 重複リスク | 中 | 高 |
| 更新判定への影響 | あり | あり(特に重要) |
特にText Domainの重複は致命的です。
正しいオリジナルテーマの作り方
オリジナルテーマを作る場合は、
最初にテーマ情報を明確に分けることが重要です。
CSS
/*
Theme Name: My Portfolio Theme
Text Domain: my-portfolio-theme
Author: Your Name
*/ポイント
- 一般名詞・短い名前は避ける
- 英小文字+ハイフンで一意にする
- フォルダ名とText Domainを揃える
これだけで、
「自作テーマなのに更新される」事故は防げます。
念のため子テーマを作るという選択
完全オリジナルテーマであっても、
- 将来自分が修正する可能性
- 他人が引き継ぐ可能性
- うっかり更新を押すリスク
を考えると、
保険として子テーマを作るのは合理的です。
子テーマは
- style.css
- functions.php
だけで成立し、コストはほぼありません。
この失敗から学んだこと
- 自作テーマでも更新されることがある
- Theme Name / Text Domainの重複は危険
- テーマ情報は最初に設計すべき
- 「念のため」の対策が事故を防ぐ
まとめ
- WordPressは
style.cssのテーマ情報で更新対象を判断する - Text Domainが被ると、自作テーマでも上書きされる
- オリジナルテーマでは 必ず一意なTheme Name / Text Domainを設定する
- 不安があれば子テーマを切るのが安全
この経験以降、
テーマ更新を前提にした設計を意識するようになりました。