カスタマイザにチェックボックスを表示する簡単なコントロールがあります。
$wp_customize->add_setting( 'display_about_text', array(
'default' => true
) );
$wp_customize->add_control( 'display_about_text', array(
'label' => __( 'Display Text', 'my_theme_name' ),
'type' => 'checkbox',
'section' => 'about'
) );
カスタマイザでDisplay Text
を太字にしたいので、ラベル行を次のように変更しました。
'label' => __( '<strong>Display Text</strong>', 'minitheme' ),
ただし、カスタマイザ内のHTMLタグは次のように出力されるだけです。
<strong>Display Text</strong>
HTMLを出力する代わりに太字で表示させるにはどうすればいいですか?カスタマイザでHTMLを出力しようとすると、この問題に何度か遭遇しました。 esc_html()
と同じ問題。
これにはCSSを使用する必要があります。例えば:
#customize-control-display_about_text label {
font-weight: bold;
}
customize_controls_enqueue_scripts
アクションでこのためのスタイルシートをキューに入れます。
JSを使用してコントロールを変更する必要がある場合は、他の回答でjQuery.ready
を使用することはお勧めしません。代わりに、カスタマイザーJS APIを使用して、準備ができたらコントロールにアクセスする必要があります。たとえば、次を含むcustomize_controls_enqueue_scripts
アクションでスクリプトをエンキューします。
wp.customize.control( 'display_about_text', function( control ) {
control.deferred.embedded.done( function() {
control.container.find( 'label' ).wrapInner( '<strong></strong>' );
});
});
このパターンは、実際には、カスタムCSS機能のtextarea
がどのように拡張されるかをコアで見ることができます。 https://github.com/WordPress/wordpress-develop/blob/4.8.0/src/ wp-admin/js/customize-controls.js#L5343-L5346
カスタマイザはesc_html()
を介してラベルテキストを実行するので、HTMLはデフォルトでラベルで許可されていません。太字のラベルを使用する各コントロールのコンテンツのレンダラーをオーバーライドすることもできますが、おそらくやり過ぎです。
代わりに、customize_controls_enqueue_scripts
アクションを使用してカスタマイザ画面にJavaScriptをエンキューするソリューションがあります。その後、jQueryを使用して目的のコントロールをターゲットにし、ラベルのテキストを<strong>
タグでラップします。
add_action( 'customize_controls_enqueue_scripts', 'wpse_customize_controls_scripts' );
function wpse_customize_controls_scripts() {
wp_enqueue_script(
'wpse-customize',
get_template_directory_uri() . '/js/wpse-customize.js',
[ 'jquery', 'customize-controls' ],
false,
true
);
}
wpse-customize.js
jQuery( document ).ready( function( $ ) {
$( "#customize-control-display_about_text label" ).wrapInner( "<strong></strong>" );
});