Ich habe die folgenden zwei Customizer-Steuerelemente, die ein Kontrollkästchen zum Anzeigen/Ausblenden von Inhalten anzeigen. Auf jedes Kontrollkästchen folgt ein active_callback
, der die entsprechenden Steuerelemente anzeigt/verbirgt, wenn das Kontrollkästchen aktiviert/deaktiviert ist.
// Display About Block Button
$wp_customize->add_setting( 'display_about_block_button', array(
'default' => true
) );
$wp_customize->add_control( 'display_about_block_button', array(
'label' => __( 'Display About Button', 'my_theme_name' ),
'type' => 'checkbox',
'section' => 'about',
'active_callback' => 'display_about_block_callback'
) );
function display_about_block_button_callback( $control ) {
if ( $control->manager->get_setting( 'display_about_block_button' )->value() == true ) {
return true;
} else {
return false;
}
}
// Display About Block
$wp_customize->add_setting( 'display_about_block', array(
'default' => true
) );
$wp_customize->add_control( 'display_about_block', array(
'label' => __( 'Display About Block', 'my_theme_name' ),
'type' => 'checkbox',
'section' => 'about'
) );
function display_about_block_callback( $control ) {
if ( $control->manager->get_setting( 'display_about_block' )->value() == true ) {
return true;
} else {
return false;
}
}
Beide funktionieren alleine, mit der Ausnahme, dass das Problem darin besteht, dass sich der About Block Button
unten im About Block
befindet. Ich möchte in der Lage sein, den About Block Button
alleine auszublenden, wenn der About Block
angezeigt wird, aber auch den About Block Button
auszublenden, wenn der About Block
vollständig ausgeblendet ist (ohne beide Kontrollkästchen aktivieren zu müssen). Daher benötigt es zwei active_callback
s wie folgt:
// About Block Button Text
$wp_customize->add_setting( 'about_block_button_text', array(
'default' => __( 'Read More', 'my_theme_name' )
) );
$wp_customize->add_control( 'about_block_button_text', array(
'label' => __( 'About Button Text', 'my_theme_name' ),
'type' => 'text',
'section' => 'about',
'active_callback' => 'display_about_block_button_callback',
'active_callback' => 'display_about_block_callback'
) );
Leider werden nicht beide active_callback
akzeptiert. Wie kann ich zwei (oder möglicherweise mehr) aktive Rückrufe auf einem Steuerelement haben?
Sie können eine dritte aktive Rückruffunktion erstellen, die nur auf die beiden vorhandenen verweist, beispielsweise über eine anonyme Funktion (PHP≥5.3):
// About Block Button Text
$wp_customize->add_setting( 'about_block_button_text', array(
'default' => __( 'Read More', 'my_theme_name' )
) );
$wp_customize->add_control( 'about_block_button_text', array(
'label' => __( 'About Button Text', 'my_theme_name' ),
'type' => 'text',
'section' => 'about',
'active_callback' => function( $control ) {
return (
display_about_block_button_callback( $control )
&&
display_about_block_callback( $control )
);
},
) );