WordPressサイトで子テーマを後から適用するときに親テーマのカスタマイザーの設定内容を引き継ぐ方法 0

Wordpressで子テーマを使わずにサイトやブログを作ってすでに稼働している中、あとからfunction.phpに何らかの関数を追加したい場合にはどうすればいいか。

カスタマイザー(外観 > カスタマイズ )で何も設定していなければ、そのテーマの子テーマを作って、子テーマを有効にすれば問題ない。

 

でも、たいていの場合は親テーマのカスタマイザーで何かしらの設定をしてあり、それは親テーマのものとして保存されているので、子テーマに切り替えたとたん、設定してあった親テーマのカスタマイザーの内容が消えてしまう。設定を子テーマで1からやり直すのが大変でないならそうすればいいのだけど、カスタマイザーでの設定事項が多い場合は面倒だし見落としもありそう。

 

そんな時は、DBで親テーマに適用されているカスタマイザーの設定内容を「子テーマのもの」であるという風に変更してあげればよい。

 

実は、カスタマイザでの設定内容は、データベースのwp_optionsテーブル内(←プレフィックス部分wp_は別の文字列の場合もあるが、便宜上ここではwp_がプレフィックスであるとする)の一行にすべてが保存されている。

phpMyAdminなどでDBにアクセスし、wp_optionsテーブルを表示、検索窓でtheme_mods_(親テーマ名)を探す。

これを theme_mods_(親テーマ名) → theme_mods_(親テーマ名)-child と変更する。

例えば、テーマがabcという名前だったら theme_mods_abc を theme_mods_abc-child とする。

 

こうすれば、今まで親テーマのカスタマイザーの設定内容だったものが、子テーマのものとして認識されるようになる。

 

注意:すでに子テーマのカスタマイザーで何らかの設定をした場合、wp_optionsテーブルにtheme_mods_(親テーマ名)-child の行ができてしまい、上記の設定変更ができなくなる。

この場合は、先にtheme_mods_(親テーマ名)-child の行を削除してから、theme_mods_(親テーマ名) → theme_mods_(親テーマ名)-child と変更すればOK。

 

あとは管理画面から子テーマを有効にすればいい。

 

参考:Where is customizer related data stored in the database?

Thanks for sharing!
  •  
  •  
  •  
  •  
  •  
  •  
  •  
Previous ArticleNext Article

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください