Intereting Posts
Новая опция размера изображения, не показывающая изменение поведения get_search_form Отфильтровать в ответ комментарии от панели управления WordPress Удалить форму и URL утерянного пароля Как разрешить пользователю вводить пароль при регистрации Добавление пользовательских полей для Img в сообщениях get_the_post_thumbnail () возвращает пустую строку в пользовательском типе сообщения Как использовать определенные URL-адреса для некоторых сообщений WordPress как механизм шаблонов Возможности пользовательских таксономий Руководство или инструмент для вставки бутстрапа в тему подчеркивания? Как динамически загружать контент в тело модального окна Bootstrap? Настройка «идентификаторов пользователей» и добавление панели «пользователь» в области администратора Что это за недокументированные аргументы для register_taxonomy? Как добавить дополнительные языковые пакеты в WordPress

Почему действие customize_register выполняется дважды?

add_action( 'after_setup_theme', 'wdwt_customizer_register' ); function wdwt_customizer_register(){ add_action( 'customize_register', 'wdwt_customizer_add_panels' ); } function wdwt_customizer_add_panels($wp_customize ){ /*this function is called twice*/ } 

То же самое можно сказать и о двадцать девятой теме. Функция twentyfifteen_customize_register подключенная к одному и тому же тегу, вызывается дважды.

Кажется, что действие «customize_register» выполняется дважды, один раз в администраторе customizer и один раз в части предварительного просмотра. Версия WordPress – 4.3.

Это ошибка или функция?

Solutions Collecting From Web of "Почему действие customize_register выполняется дважды?"

Я думаю, что customizer создает запрос xhr для загрузки предварительного просмотра сайта (см. Раздел devtools в сети> xhr). В моем случае я хочу проверить, существует ли определенная переменная isset через переменную $ _GET ['foo']. Моя функция должна быть вызвана один раз, а не дважды, иначе она переопределит мое предыдущее состояние.

Мое решение – проверить, является ли $ _POST ['wp_customize'] пустым или нет. Если пустой, это означает, что моя функция дважды не вызывается вызовом предварительного просмотра.

Я использую следующие hook / action customize_loaded_components

Пример:

 function wpdocs_remove_widgets_panel( $components ) { if( empty( $_POST['wp_customize'] ) ) { // Do stuff here that will not be loaded twice by the previewer } return $components; } add_filter( 'customize_loaded_components', 'wpdocs_remove_widgets_panel' );