J'essaie d'avoir un champ dépendant dans Customizer. Un champ est la case à cocher Enable Custom Excerpt Length
. Un autre est le champ de texte Custom Excerpt Length
. Je veux implémenter le champ contextuel en utilisant active_callback
. Je suis cet article. https://make.wordpress.org/core/2014/07/08/customizer-improvements-in-4-0/
J'ai des problèmes pour vérifier la valeur de contrôle dans la fonction de rappel.
$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
}
Vous pouvez obtenir et vérifier la valeur de votre thème mod comme vous le faites habituellement n'importe où.
Ce code est testé et fonctionne (le code à l'intérieur de cyb_customizer()
est exactement le code que vous avez posté dans la question, seule la partie add_section
a été ajoutée):
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',
)
);
}