Intereting Posts
Добавление функции JS в качестве третьего параметра в do_action Показать сообщения в стиле, аналогичные сообщениям по умолчанию Участок загружается очень медленно (время загрузки 4-5 минут) Комментарий WordPress от не показывать Отправка формы с использованием Ajax для запуска запроса SQL Select на основе ввода пользователем из формы Отключить вкладку библиотеки мультимедиа для не админов на экране загрузчика Конфликтующие параметры редактирования сообщений под панелью инструментов Как добавить альтернативную таблицу стилей в качестве темы? Как изменить собственный тип сообщения Как разрешить первому пользователю увидеть версию кэшированного сайта? как вставить HTML-форму в всплывающее окно javascript? Когда использовать wp_reset_postdata (); Потеря способности предварительного просмотра: W3 Total Cache + Постоянное имя Пользовательский параметр URl Как динамически создавать субдомен при создании пользователя в WordPress?

Новый WP_Customize API – как он работает под капотом?

Я заметил, что если вы вносите изменения через новую функцию «настроить», когда вы перемещаетесь на другой странице в документе предварительного просмотра iframe, ваши изменения все равно применяются, даже если они несохранены.

Похоже, что WP где-то хранит временные изменения, и он применяет их на сайте, если сайт просматривается в режиме «настроить».

Но как сайт знает, что он находится в режиме настройки? Потому что я не вижу никаких аргументов запроса к ссылкам или что-то в этом роде.

Solutions Collecting From Web of "Новый WP_Customize API – как он работает под капотом?"

Здесь есть несколько бит, но, к customize-preview.js этот код находится в customize-preview.js :

 this.body.on( 'click.preview', 'a', function( event ) { event.preventDefault(); self.send( 'scroll', 0 ); self.send( 'url', $(this).prop('href') ); }); 

Event.preventDefault предотвращает фактическую работу ссылок. Следующий код затем отправляет сообщение вверх, сообщая ему: a) прокрутите страницу вверху страницы и b) измените URL-адрес.

Причина для обмена сообщениями заключается в том, что есть не один iframe, есть два. Страница, на которую вы нажали, фактически загружена внутри другого iframe с настройками добавленного к нему настраивателя (через POST действительно), затем эффект затухания используется для постепенного исчезновения старого и постепенного исчезновения в новом. Это предотвращает появление белого и уродливого экрана, когда он переключается на новую страницу.

Также устраняет необходимость делать фильтрацию и т. Д. В коде темы и потенциально изменять внешний вид страницы. Тема, таким образом, отображается как есть, без существенных изменений в ее содержании.

Подобный код существует там, чтобы предотвратить подачу представления формы (он просто ничего не делает) и т. Д.

Фильтр для перехвата и обработки значений настраиваемых параметров находится в class-wp-customize-setting.php . Функция preview() добавляет фильтры, необходимые для обработки входящих значений, _preview_filter() – это фильтр. Он просто принимает get_option() или get_theme_mod() , get_theme_mod() , когда они должны быть изменены, и вместо этого возвращает измененные значения.

Вы заметите, что когда вы нажимаете ссылку в окне предварительного просмотра настраиваемого, запрос, который сгенерирован, является POST запросом вместо обычного GET . Настраиваемый интерфейс, по-видимому, перекрывает любые клики по ссылкам и делает POST вместо следующих данных формы:

 wp_customize: on theme: themename customized: {json-encoded-options-here} customize_messenger_channel: preview-1 

В настраиваемом поле содержатся параметры, которые вы изменили, так что данные передаются в вашу тему. Затем код настраивателя перехватывает (через фильтр, я не уверен, какой именно) параметры вашей темы, когда они запрашиваются, и заменяет их значениями в настраиваемом параметре.