Правильный способ запуска скриптов с зависимостями без использования enqueue?
При использовании enqueue вы указываете $deps
для вашего скрипта или массив скриптов, которые должны быть загружены первыми для корректной работы вашего скрипта.
<?php wp_enqueue_script( $handle, $src, $deps, $ver, $in_footer ); ?>
Например:
function script_that_requires_jquery() {
wp_register_script( 'script-with-dependency', 'http://www.example.com/script-with-dependency.js', array( 'jquery' ), '1.0.0', true );
wp_enqueue_script( 'script-with-dependency' );
}
add_action( 'wp_enqueue_scripts', 'script_that_requires_jquery' );
Обычно я делаю так, но это не всегда работает:
function script_that_requires_jquery(){
if ( wp_script_is( 'jquery', 'done' ) ) { ?>
<script type="text/javascript">
(function($) {
// здесь идет функция jQuery
})( jQuery );
</script>
<?php }
}
add_action('wp_footer', 'script_that_requires_jquery');
Может быть, вот так?
function script_that_requires_jquery(){
wp_enqueue_script( 'jquery' );
?>
<script type="text/javascript">
(function($) {
// здесь идет функция jQuery
})( jQuery );
</script>
<?php
}
add_action('wp_footer', 'script_that_requires_jquery');

function script_that_requires_jquery() {
wp_register_script( 'script-with-dependency', 'http://www.example.com/script-with-dependency.js', array( 'jquery' ), '1.0.0', true );
wp_enqueue_script( 'script-with-dependency' );
}
add_action( 'wp_enqueue_scripts', 'script_that_requires_jquery' );
Это правильный метод подключения скриптов (и стилей тоже). Вы всегда должны использовать хук wp_enqueue_scripts
для подключения скриптов и стилей.
Есть несколько моментов, на которые нужно обратить внимание при регистрации скриптов и стилей. Во-первых, убедитесь, что порядок, в котором вы размещаете их внутри функции, правильный. Первый скрипт в функции будет выполняться первым, второй - вторым и т.д. Таким образом, вы не можете разместить скрипт, зависящий от jQuery, до jQuery - это не сработает.
Еще одна потенциальная проблема - это add_action( $hook, $function_to_add, $priority, $accepted_args );
. Без установки параметра $priority
всегда есть риск, что ваш скрипт/стиль будет загружен до других скриптов/стилей, которые могут перезаписать ваши.
В вашем случае ваш скрипт может загрузиться до jQuery, поэтому он не будет работать. Я всегда устанавливаю этот параметр с очень низким приоритетом (очень большим числом) при добавлении пользовательских скриптов и стилей. Это гарантирует, что мои скрипты и стили загрузятся последними. Например:
add_action( 'wp_enqueue_scripts', 'script_that_requires_jquery', 999 );
