Intereting Posts
Перемещение тестовой темы на сайт без ошибки mySQL – как? Получить условия по идентификаторам с указанием идентификаторов Как скрыть редактор, но сохранить доступ к медиабиблиотеке Если идентификатор автора сообщения … Добавить переменную между do_shortcode Получить атрибуты коротких кодов Исключить внутренние ссылки из модерации комментариев? Что является лучшей альтернативой этому коду? Удалите Google Fonts, которые (возможно) добавлены плагинами Сайт WordPress перестает работать после простого открытия header.php в редакторе wp-admin текущий класс меню не работает Как получить расширенное значение настраиваемого поля в соответствии с использованием идентификатора POST? Тема Проверка ошибок в отношении отсутствующих правил CSS Как я могу использовать статический (ish) URL для отображаемого изображения для сообщения? Если обычная таксономия существует на почте?

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 ) ); }, ) );