【件名】子テーマを選択し、親テーマのスキンを選択したときに正しく表示されない
現象
子テーマを選択し、親テーマのスキンを選択すると、インラインhvn-color-inline-cssなどが出力されない。
以下のときは、正しく表示される。
- 親テーマを選択し、スキンを選択
- 子テーマを選択し、子テーマのスキンを選択
原因
表1に、変数の値を示す。
| 変数 | 親テーマ | 子テーマ |
|---|---|---|
| skin_url | http://~/wp-content/themes/cocoon-master/skins/skin-made-in-heaven/ | http://~/wp-content/themes/cocoon-master/skins/skin-made-in-heaven/ |
| get_theme_file_uri | http://~/wp-content/themes/cocoon-master/ | http://~/wp-content/themes/cocoon-child-master/ |
| skin | /skins/skin-made-in-heaven/ | http://~/wp-content/themes/cocoon-master/skins/skin-made-in-heaven/ |
スキンパスを削除し、スキンフォルダ名/skins/skin-made-in-heaven/を求める。
子テーマを選択しているため、get_theme_file_uri()の戻り値は、子テーマURLとなる。
そのため、表1に示すように、変数skinの値が不正となる。
スキンフォルダ下のlibから、各関数を呼び出すが、パスが不正のため、各関数が呼ばれない。
結果として、インラインhvn-color-inline-cssなどが出力されなかった。
対策
スキンフォルダ名を動的に求めるのをやめ、固定とする。以下に変更する。
$skin = '/skins/skin-made-in-heaven/';
$skin_url = get_theme_file_uri($skin);
define('HVN_SKIN', $skin);
define('HVN_SKIN_URL', $skin_url);
//******************************************************************************
// 関数定義
//******************************************************************************
$path = url_to_local(HVN_SKIN_URL);
$files = glob($path . '/lib/*.php');
変更一覧
| パス | ファイル名 |
|---|---|
| /skin-made-in-heaven/ | functions.php |