WordPressで作成されたウェブサイトを継続してカスタマイズしているとき、ある時期から子テーマを使い出すことがあるかと思います。この時、親テーマのカスタマイザーで設定した内容(プロパティ値)は、子テーマに引き継がれません。特に親テーマが多くの設定項目を持っていた場合、子テーマのカスタマイザーで延々と同じ内容を再設定することは大変です。
この操作をダッシュボードから行うためのプラグインInherit Theme Modsをリリースしました。

Inherit Theme Modsは、親テーマと子テーマの間で、プロパティ値の引き継ぎを行うためのプラグインです。親テーマのプロパティ値を子テーマに上書きしたり、値の引き継ぎを行うことができます。また、プロパティ値を表形式で表示するインスペクターも備えています。

プラグインInherit Theme Modsをダッシュボードからインストールすると、「設定」のタブに「Inherit Theme Mods」の項目が現れます。ここからプロパティ値の引き継ぎなどの操作を行うことができます。screenshot-1

プロパティ値の上書き

「プロパティ値の上書き」は、親テーマのプロパティをセットでコピーし、子テーマに設定します。子テーマに固有の設定項目があった場合は、これは消去されます。例えば以下の例では、変更前と変更後で、子テーマのみに設定したヘッダー画像がなくなっていることを確認できます。

この操作で変更された子テーマのプロパティ値はゴミ箱に保存され、必要であれば後から復元できます。

overwrite

 

プロパティ値の継承

「プロパティ値の継承」は、親テーマのプロパティを値を優先して子テーマに設定します。子テーマに固有の設定項目があった場合は、元のまま維持されます。例えば以下の例では、変更前と変更後で、子テーマのみに設定したヘッダー画像がなくならず、保たれていることが確認できます。

この操作で変更された子テーマのプロパティ値はゴミ箱に保存され、必要であれば後から復元できます。
inherit

使いどころ

例えば、子テーマを使って親テーマの一部分だけを書き変えたい、と言ったような些細なカスタムを行う場合、このプラグインは有効です。
逆に、よくカスタマイズされてたくさんの固有の設定項目を持っている子テーマの場合、効果は薄いでしょう。

役割を終えた後は、このプラグインをアンインストールして問題はありません。

その他

このプラグインは内部においては親テーマのプロパティ値をget_optionし、これを子テーマにset_optionしています。また、継承については、親テーマの一旦array_mergeしてからset_optionしています。

また、ゴミ箱機能については、上書きされる前の子テーマのプロパティ値を、プラグイン固有の値のキーを使ってadd_option / update_optionしています。これは、アンインストール時に削除されます。

このプラグインは、プロパティ値の明示的な引き継ぎ・上書きをユーザーが行うためのプラグインです。一方、WordPressコアの方では以下のような議論もあるようです。

[Child themes should inherit parent theme customizer settings on activation / switching] https://core.trac.wordpress.org/ticket/27177

ここでは、プロパティ値は暗示的に引き継がれるべきだと言うことが議論されています。