WordPressテーマの初期化方法
概要
「己の為に金は鳴る – 株式投資の投資日記」のサイトにSTINGER8-ChildのWordPressテーマを使っていた。サイトのドメインをinvest.senooken.jpからmoney.senooken.jpに変更した際に,ヘッダー画像がうまく反映されず,困っていた。
今回,WordPressテーマを初期化することで,STINGER8 (STINGER8-Child) のヘッダー画像を再びうまく設定できるようになったので,記録を残す。
「WordPressテーマを初期化したいのですが戻りません – オレンジの国」を参考にした。WordPress 5.5.3-jaで確認した。
方法
以下の手順でWordPressのテーマをリセットできる。
- 子テーマ/親テーマを削除
- DBの_optionsテーブルのtheme_mods_<theme name>を削除
- 親テーマ/子テーマをインストール
1と3のテーマの再インストールはわかりやすいだろう。テーマで直接修正したfunctions.php
やstyle.css
を削除してクリーンインストールする。wp-adminの [テーマ] 画面から簡単に実行できる。
重要なのが2のDBのwp_options
テーブルのtheme_mods_<theme name>
のフィールドだ。こちらのフィールドはテーマに対する修正が記録されている。例えば,テーマのヘッダー画像などの修正情報が入っている。
こちらのDB値はテーマを削除しても残っている。今回は,こちらのDB値が残っていたのが不具合の原因だった。
例えば,以下のような値が残っていた。
theme_mods_stinger8-child
A:4:{s:18:"custom_css_post_id";i:76;s:18:"nav_menu_locations";a:0:{}s:12:"header_image";s:51:"https://money.senooken.jp/asset/sites/7/header.png";s:17:"header_image_data";O:8:"stdClass":5:{s:13:"attachment_id";i:148;s:3:"url";s:51:"https://money.senooken.jp/asset/sites/7/header.png";s:13:"thumbnail_url";s:51:"https://money.senooken.jp/asset/sites/7/header.png";s:6:"height";i:300;s:5:"width";i:1060;}}
なお,今回はマルチサイトだったので,実際にはsenooken_7_options
テーブルのoption_name=theme_mods_stinger8-child
の値を確認した。
そこで,このフィールドを削除する。phpmyadminであれば [Delete] ボタンを選べばよい。
これでヘッダー画像をきちんと設定できるようになった。
結論
WordPressテーマの初期化方法・リセット方法を整理した。
DBに値が残っているというのが盲点だった。途中でWP Resetプラグインを試そうともしたのだが,マルチサイトに対応していなかった。結果として,余計なプラグインに頼らずに解決できてよかった。
WordPressのテーマで,途中で何かおかしくなったら,今回の手順でまずは初期化して直るかどうかを試したい。