header_textcolorを削除するとdisplay_header_textが無効化する
"ヘッダーテキスト色" は WordPress に標準で備わっているテーマのカスタマイズ機能の 1 つです。
このカスタマイズ機能を削除するには登録済みのパラメータ header_textcolor
を削除します。
ところが header_textcolor
を削除すると、それとは別のテーマのカスタマイズ機能 "ヘッダーテキストを表示する" が機能しなくなります。
"ヘッダーテキストを表示する" は、パラメータ display_header_text
で管理されます。
発生する問題
次のような問題が確認できます。
- "ヘッダーテキストを表示する" のチェックボックスが切り替わらない。
- チェックボックスの入力状態が保存されない。
- パラメータ transport の値が refresh / postMessage のいずれでも動作しない。
- transport の値が refresh であっても再読み込み(転送)されません。
問題は WordPress 4.2 で起きることを確認しました。
問題の原因
標準のカスタマイズ機能は /wp-includes/class-wp-customize-manager.php ファイルで定義されています。
WordPress 4.2 では、display_header_text
に関する項目のソースコードは次のようになっています。
$this->add_control( 'display_header_text', array(
'settings' => 'header_textcolor',
'label' => __( 'Display Header Text' ),
'section' => 'title_tagline',
'type' => 'checkbox',
) );
パラメータ settings
の値に header_textcolor
が与えられています。
つまり、header_textcolor
を削除すると settings
の参照先がなくなり、
display_header_text
が機能しなくなります。
なぜこのような仕様にしているのかは良く分かりません。 開発者フォーラムや開発の履歴を追えば確認することが出来るでしょうが、問題の解決に至るわけではありませんので、割愛します。
また執筆時点で settings
について詳細に説明する公式ページは見当たらないので、詳細が必要であれば関連するソースコードを読む必要があります。