【件名】見出しデザインメニューのカスタマイズ機能に制約がある
現象
スキンは、見出しデザインを登録し、メニューに反映する機能を有している。
子テーマのtmpフォルダーのように、追加・変更した差分を上書きする事をしていない。
この為、以下の制約が生じる。
- 親テーマのスキンに追加・変更
親テーマを更新すると、追加・変更した見出しが消えてしまう。 - 子テーマ下に、スキン一式コピーし、追加・変更
子テーマ下に、スキン一式をコピーするなら、親テーマとして配布する必要がない。
原因
以下に、コードを示す。
$skin = '/skins/skin-made-in-heaven/';
$skin_url = get_theme_file_uri($skin);
define('HVN_SKIN', $skin);
define('HVN_SKIN_URL', $skin_url);
get_theme_file_uri
で、親・子テーマの何れかのスキンフォルダーURLを取得する。
結果、参照先のスキンフォルダーURLは、固定となる。
この為、該当スキンフォルダーに、スキン一式ないと機能しない。
対策
以下に、変更例を示す。
親・子テーマのどちらに、該当ファイルがあるか、動的に参照する。
結果、追加・変更した見出しのみ、差分を子テーマから取得する。
$h_url = HVN_SKIN_URL . "assets/css/h{$i}/h{$i}-{$no}.css";
↓
$h_url = get_theme_file_uri(HVN_SKIN . "assets/css/h{$i}/h{$i}-{$no}.css");
以下に、修正対象を示す。
パス | ファイル名 |
---|---|
/skin-made-in-heaven/ | functions.php |
/skin-made-in-heaven/lib/ | function.php |
/skin-made-in-heaven/lib/ | hook-wp.php |
/skin-made-in-heaven/tmp/ | css-custom.php |