Intereting Posts
Добавление нового сообщения через пользовательский тип сообщения предлагает мне «Slug» в качестве опции, как мне получить больше? Добавить новый раздел в виджет «Right Now» Разная компоновка на второй странице Порядок галереи, указанный в коротких кодах, игнорируется в функции галереи Перенаправить одну статью на страницу с разбивкой по страницам ACF – добавить группу внутри ретранслятора Столбец столбцов столбцов администратора не работает для пользовательского типа сообщения Архивная страница с переписью нескольких таксономий Вход WP Multisite не работает на одном дочернем сайте. Возможно, проблема с cookie-файлами? Связанный с Rand вопрос Как перенаправить один адрес администратора на другой, когда URL-адрес страницы администратора содержит «/admin.php?page=»? Объединение нескольких таблиц стилей в один условный блок широта / долгота meta_query WordPress SQL-поиск, как обрабатывать SQL-инъекцию? Переопределить функцию twentytwelve_scripts_styles в дочерней теме

Можно ли расширять WP Customize JS Methods?

Мне интересно, можно ли расширить методы анонимного объекта api в wp-admin/js/customize-control.js . Мне нужно переписать один из этих методов с моей собственной логикой, но я подозреваю, что это невозможно, так как оно завернуто в выраженное выражение функции:

 /* globals _wpCustomizeHeader, _wpMediaViewsL10n */ (function( exports, $ ){ // code })( wp, jQuery ); 

Насколько я могу судить, я не могу продлить прототип из окна, потому что он выполнен анонимно и недоступен из window.wp.customize . Любая идея, если такое возможно? Существует даже упоминание об исключении этого в документации / описании методов .toggle (): https://github.com/WordPress/WordPress/blob/master/wp-admin/js/customize-controls.js#L110 , но я «Не знаю, означают ли они просто форматирование всего JS-файла, удаление очереди версии WP и зависание вашего, или если они означают или что-то другое.

Обратите внимание, что это похоже на то, что должно быть возможно с помощью wp.customize.{method}.extend({ foo: // replace method foo here }) но это применимо только к общедоступным базовым классам / объектам, а не к wp-admin/js/customize-control.js

Solutions Collecting From Web of "Можно ли расширять WP Customize JS Methods?"

Я усилю свой небольшой комментарий по вашему вопросу. Но опять намек; Я не эксперт JS. Следящий источник, подсказки использовались только при игре с Customizer для разных проверок, например, как моя песочница .

wp.customize

Понимание интерфейса пользовательского интерфейса WP темы сосредотачивается на понимании объекта wp.customize javascript. Объект wp.customize важен, и вы должны установить его с самого начала.

Живой пример

Следующий небольшой пример демонстрирует это. Сначала я устанавливаю var api в объект customizer. После этого я устанавливаю свои пользовательские поля в api и улучшаю это с помощью небольшого источника jQuery, чтобы обновить результат для предварительного просмотра в реальном времени.

 ( function( $ ) { var api = wp.customize; // Site title and description. api( 'blogname', function( value ) { value.bind( function( to ) { $( '#header h1 a, #footer a.site-name' ).html( to ); } ); } ); api( 'blogdescription', function( value ) { value.bind( function( to ) { $( '#header p.site-description' ).html( to ); } ); } ); } )( jQuery ); 

Настройки и элементы управления

Объекты управления хранятся в wp.customize.control а объекты настройки хранятся в wp.customize . Класс ценности обладает множеством функций, которые могут вам помочь.

  • instance (id) – Получить объект из коллекции с указанным идентификатором.
  • имеет (id) – возвращает true, если коллекция содержит объект с указанным id, а в противном случае – false.
  • add (id, value) – Добавить объект в коллекцию с указанным идентификатором и значением.
  • remove (id) – удалить объект из коллекции.
  • create (id). Создайте новый объект, используя конструктор по умолчанию и добавьте его в коллекцию.
  • каждый (обратный вызов, контекст) – итерация по элементам в коллекции.

Пользовательские настройки

С помощью этих функций мы можем улучшить наши пользовательские настройки.

 var api = wp.customize, mysetting = api.instance( 'my_custom_setting' ); 

также можно использовать для массива

 var api = wp.customize, mysetting = api.instance( 'my_custom_settings[my_custom_setting_field]' ); 

Получить

См. Результат в консоли.

 console.log( api.instance( 'my_custom_settings[my_custom_setting_field]' ).get() ); 

Задавать

Вы также можете изменить значения настроек с помощью set функций.

 api.instance( 'my_custom_settings[my_custom_setting_field]' ).set( 'my new value' ) ); 

Получить с контролем, как объект

 console.log( api.control.instance( 'my_custom_setting_field' ) ); 

Полезный источник

  • WP-администратора / JS / настраивают-controls.js
  • WP-включает / JS / настроить-preview.js
  • WP-включает / JS / настроить-base.js