WordPress Customizer: как у вас есть несколько активных обратных вызовов на одном элементе управления?

У меня есть следующие два элемента управления Customizer, которые показывают флажок для отображения / скрытия содержимого. За каждым active_callback следует active_callback который показывает / скрывает соответствующие элементы управления, когда флажок установлен / снят флажок.

 // 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; } } 

Они оба работают самостоятельно, за исключением того, что About Block Button « About Block Button ниже находится внутри About Block . Я хочу иметь возможность скрывать только About Block Button « About Block Button если отображается « About Block но также можно скрыть About Block Button « About Block если « About Block полностью скрыто (без необходимости проверки обоих полей). Следовательно, для этого требуется два типа 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' ) ); 

К сожалению, он не принимает и active_callback . Как я могу иметь два (или, возможно, больше) активных обратных вызовов на одном элементе управления?

Solutions Collecting From Web of "WordPress Customizer: как у вас есть несколько активных обратных вызовов на одном элементе управления?"

Вы можете создать третью активную функцию обратного вызова, которая ссылается только на две существующие, например, через анонимную функцию (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 ) ); }, ) );