it-roy-ru.com

событие готовности wp.customize.bind не сработало

Я пытаюсь добавить JavaScript к настройщику темы. Мой файл JS загружен без проблем, и событие готовности моего документа работает, но функция wp.customize.bind() не вызывает мой обратный вызов.

jQuery(document).on('ready', function(){
  console.log('binding')
  wp.customize.bind('ready', function(){
    console.log('ready')
  })
})

binding выводится на консоль, а ready - нет.

Что мне не хватает? Кажется, что здесь мало документации по использованию javascript.

6
Arcath

Не помещайте обработчик событий ready в настройщик внутри обработчика event jQuery. Настройщик ready сработает в jQuery ready, поэтому вы добавляете обработчик событий слишком поздно. Просто делать:

wp.customize.bind('ready', function(){
    console.log('ready');
});

Ваш JS должен быть поставлен в очередь со скриптом customize-controls в качестве его зависимости. Поставьте в очередь действие customize_controls_enqueue_scripts.

2
Weston Ruter

У меня была такая же проблема. Причина, по которой он не был обязательным для меня, заключалась в том, что у меня была эта ошибка "Uncaught TypeError: Cannot read property 'unsync' of undefined" на моей консоли.

Это было вызвано тем, что я удалил настройки header_textcolor из шаблона темы с помощью $wp_customize->remove_setting( 'header_textcolor' );, но на него все еще ссылались в js.

После исправления, связка работала как задумано.

0
Digvijayad