Принудительное изменение порядка загрузки скриптов WordPress

13 июн. 2012 г., 11:38:48
Просмотры: 28.7K
Голосов: 9

У меня есть несколько скриптов, которые добавляются в очередь загрузки,

проблема в том, что я хочу принудительно установить порядок загрузки этих скриптов. Один конкретный скрипт загружается из плагина раньше скриптов темы и требует jquery, хотя сам плагин не требует jquery (плохая разработка плагина, но я предпочитаю не трогать сторонний код из соображений совместимости с будущими обновлениями)

есть ли способ изменить порядок загрузки скриптов во время выполнения?

Большое спасибо

0
Все ответы на вопрос 2
3
16

Вам нужно просто подключить свои скрипты до того, как это сделает плагин. Вы можете сделать это, установив приоритет 0 для своего хука. Например, сделайте следующее:

add_filter( 'wp_enqueue_scripts', 'wpse8170_enqueue_my_scripts', 0 );
// или если вы подключаете свои скрипты через действие init
// add_action( 'init', 'wpse8170_enqueue_my_scripts', 0 );

function wpse8170_enqueue_my_scripts() {
    wp_enqueue_script( 'myscript', 'http://path/to/my/script.js', array( 'jquery' ) );
    // остальные мои скрипты подключаются здесь...
}

Установка приоритета для ваших хуков поместит их в начало очереди вызовов, и ваши скрипты будут добавлены первыми.

13 июн. 2012 г. 11:48:22
Комментарии

извините за наивность, но я так понимаю, что wpse8170_enqueue_my_scripts_on_init — это пользовательская функция со стандартным вызовом enqueue_scripts внутри?

Alex Alex
13 июн. 2012 г. 11:51:21

@Alex я обновил свой ответ, проверьте его.

Eugene Manuilov Eugene Manuilov
13 июн. 2012 г. 12:01:29

Это не всегда работает: http://wordpress.stackexchange.com/questions/91961/hook-wp-enqueue-scripts-priority-has-no-effect

Dave Kiss Dave Kiss
23 мая 2013 г. 19:44:06
0

Чтобы добавить скрипт перед другими скриптами, используйте wp_register_script() вместо wp_enqueue_script(), а затем вручную добавьте ваш скрипт в начало очереди:

wp_register_script('handle', get_template_directory_uri()."/custom.js");
array_unshift(wp_scripts()->queue, 'handle');
4 дек. 2019 г. 19:32:38