Ich habe die folgenden zwei Customizer-Steuerelemente, die ein Kontrollkästchen zum Anzeigen / Verbergen von Inhalten anzeigt. Auf jedes Kontrollkästchen folgt ein active_callback
, der die entsprechenden Steuerelemente active_callback
/ active_callback
, wenn das Kontrollkästchen active_callback
/ active_callback
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; } }
Sie arbeiten beide alleine, außer das Problem ist, dass der About Block Button
unten im About Block
. Ich möchte in der Lage sein, den About Block Button
alleine zu verstecken, wenn der About Block
angezeigt wird, aber auch den About Block Button
ausblenden kann, wenn der About Block
komplett ausgeblendet ist (ohne beide Kästchen zu aktivieren). Daher benötigt es zwei active_callback
wie active_callback
:
// 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 akzeptiert es nicht beide active_callback
. Wie kann ich zwei (oder möglicherweise mehr) aktive callbacke auf einem Steuerelement haben?
Sie können eine dritte aktive Callback-function erstellen, die nur auf die beiden vorhandenen verweist, zum Beispiel über eine anonyme function (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 ) ); }, ) );