カスタマイザに依存フィールドを持たせようとしています。 1つのフィールドはチェックボックスEnable Custom Excerpt Length
です。もう1つはテキストフィールドCustom Excerpt Length
です。 active_callback
を使ってコンテキストフィールドを実装したいです。私はこの記事をフォローしています。 https://make.wordpress.org/core/2014/07/08/customizer-improvements-in-4-0/
コールバック関数で制御値をチェックするのに問題があります。
$wp_customize->add_setting( 'blueplanet_options[theme_enable_custom_excerpt]',
array(
'default' => false,
'capability' => 'edit_theme_options',
)
);
$wp_customize->add_control(
'theme_enable_custom_excerpt',
array(
'label' => 'Enable Custom Excerpt Length',
'section' => 'admin_section',
'settings' => 'blueplanet_options[theme_enable_custom_excerpt]',
'type' => 'checkbox',
)
);
$wp_customize->add_setting( 'blueplanet_options[theme_custom_excerpt_length]',
array(
'default' => 20,
'capability' => 'edit_theme_options',
)
);
$wp_customize->add_control(
'theme_custom_excerpt_length',
array(
'label' => 'Custom Excerpt Length',
'section' => 'admin_section',
'settings' => 'blueplanet_options[theme_custom_excerpt_length]',
'type' => 'text',
'active_callback' => 'flag_is_custom_excerpt_enabled',
)
);
// Callback function
function flag_is_custom_excerpt_enabled(){
// how to check if `theme_enable_custom_excerpt` is enabled or disabled
}
あなたが通常どこでもするようにあなたはあなたのテーマのmodの値を取得してチェックすることができます。
このコードはテスト済みで動作しています(cyb_customizer()
内のコードは、質問に投稿したコードとまったく同じです。add_section
部分のみが追加されています)。
function flag_is_custom_excerpt_enabled(){
$blueplanet_options = get_theme_mod( 'blueplanet_options');
if( empty( $blueplanet_options['theme_enable_custom_excerpt'] ) ) {
return false;
}
return true;
}
add_action( 'customize_register', 'cyb_customizer' );
function cyb_customizer( $wp_customize ) {
$wp_customize->add_section(
'admin_section',
array(
'title' => 'Admin section',
'description' => 'Admin section',
'priority' => 0,
)
);
$wp_customize->add_setting( 'blueplanet_options[theme_enable_custom_excerpt]',
array(
'default' => false,
'capability' => 'edit_theme_options',
)
);
$wp_customize->add_control(
'theme_enable_custom_excerpt',
array(
'label' => 'Enable Custom Excerpt Length',
'section' => 'admin_section',
'settings' => 'blueplanet_options[theme_enable_custom_excerpt]',
'type' => 'checkbox',
)
);
$wp_customize->add_setting( 'blueplanet_options[theme_custom_excerpt_length]',
array(
'default' => 20,
'capability' => 'edit_theme_options',
)
);
$wp_customize->add_control(
'theme_custom_excerpt_length',
array(
'label' => 'Custom Excerpt Length',
'section' => 'admin_section',
'settings' => 'blueplanet_options[theme_custom_excerpt_length]',
'type' => 'text',
'active_callback' => 'flag_is_custom_excerpt_enabled',
)
);
}