当ブログ記事「WordPress 独自テーマのスラッグを決めるたった一つの方法」の関連情報です。
当該記事のように新たに独自テーマを作るのでなく、すでに運用中のテーマスラッグを変えたいときにはどうしたらよいでしょうか…ということで、黒い画面と WP-CLI でサクサクと変更してみましょう。
想定するテーマ構成
- 有効化済みのテーマ名 … FooBar
- 有効化済みのテーマスラッグ … foobar
- 変更後のテーマスラッグ … foobar-wordpress-theme
FooBar, foobar はお使いのテーマに合わせて適宜読み替えてください。
変更手順
テーマファイル群があるディレクトリ( /wp-content/themes )に移動し、まずはデータベースを書き出しておきます。
wp db export
有効化済みのテーマをもとに、変更後の名前でコピーを作ります。
cp -r foobar foobar-wordpress-theme
WP-CLI の wp eval コマンドでデータベース内の設定を変更します。
《有効化済みテーマが子テーマではない場合》
wp eval 'update_option( "template", "foobar-wordpress-theme" ); update_option( "stylesheet", "foobar-wordpress-theme" ); add_option( "theme_mods_foobar-wordpress-theme", get_option( "theme_mods_foobar" ) );'
《有効化済みテーマが子テーマの場合》
wp eval 'update_option( "stylesheet", "foobar-wordpress-theme" ); add_option( "theme_mods_foobar-wordpress-theme", get_option( "theme_mods_foobar" ) );'
wp theme list コマンドでテーマが切り替わっているか確認します。
+------------------------+----------+--------+---------+ | name | status | update | version | +------------------------+----------+--------+---------+ | foobar-wordpress-theme | active | none | 1.0 | | foobar | inactive | none | 1.0 | +------------------------+----------+--------+---------+
サイトを表示して不都合があれば、最初に書き出したデータベースを読み込んで再トライしてみてください。
wp db import 書き出したデータベースファイル名
不都合がなければ、スラッグ変更前のテーマディレクトリ foobar と、最初に書き出したデータベースを削除しておきましょう。
wp theme delete foobar rm 書き出したデータベースファイル名
補足
基本的には以上で作業完了ですが、カスタマイザーの情報が wp_postmeta テーブルに格納されていたりして追加作業が必要なこともあります。
私が遭遇したケースでは Twenty Seventeen の子テーマで設定していたヘッダーイメージの情報が引き継がれていませんでした。
そこで以下のように追加作業を行いました。
旧スラッグを foobar 新スラッグを foobar-wordpress-theme とした場合 wp_postmeta テーブルに
- _wp_attachment_custom_header_last_used_foobar
- _wp_attachment_is_custom_header
というキーがあるので
- キー名を _wp_attachment_custom_header_last_used_foobar-wordpress-theme に変更
- キー _wp_attachment_is_custom_header の値を foobar-wordpress-theme に変更
という手順をとることでヘッダーイメージが引き継がれました。
コメントを残す