# WP_ENQUEUE_SCRIPT() │ WP 2.1.0
Функция wp_enqueue_script() добавляет скрипт (файл JavaScript) на вашу страницу. Это важная функция, так как с её помощью можно объединить несколько JavaScript файлов в один, избегая конфликтов. Если один скрипт зависит от другого, эта функция автоматически подгрузит их в правильном порядке.
## Важные моменты
- wp_enqueue_script() работает только если в вашей теме используются функции wp_head() и wp_footer(). Эти функции загружают скрипты в определённые места на странице.
- Вызывайте wp_enqueue_script() **до** вызова wp_footer(), иначе скрипты не будут подключены.
Если скрипт уже зарегистрирован с помощью функции wp_register_script(), вы можете его подключить, указав его идентификатор ($handle):
```php
// jQuery зарегистрирован в WP по умолчанию.
// Подключите его просто по идентификатору:
wp_enqueue_script('jquery');
Если скрипт не зарегистрирован, вы можете сначала зарегистрировать его, а затем добавлять с помощью wp_enqueue_script():
wp_enqueue_script('newscript', get_template_directory_uri() . '/js/custom_script.js');
С версии 3.3 эту функцию можно использовать во время генерации страницы. Скрипт будет загружен внизу страницы, когда будет вызван хук wp_footer.
Обычные хуки
Эта функция обычно используется с одним из следующих хуков:
wp_enqueue_scripts— для frontend (пользовательской части сайта);admin_enqueue_scripts— для админпанели;login_enqueue_scripts— для страницы входа (wp-login.php).
Дополнительные функции
- Используйте
wp_script_add_data(), если хотите подключить скрипт с условием, например, для старых версий Internet Explorer. - Используйте
wp_add_inline_script(), если хотите добавить JS код прямо из PHP. - Используйте
wp_dequeue_script(), если хотите отключить подключение скрипта.
Содержание
Возврат
Возвращает null (ничего).
Использование
wp_enqueue_script( $handle, $src, $deps, $ver, $in_footer );
Параметры
-
$handle (string, обязательный) — Имя скрипта. Должно быть уникальным и написано маленькими буквами. Если строка содержит знак вопроса (например,
scriptaculous?v=1.2), то часть перед знаком будет именем скрипта, а всё, что после, будет добавлено в URL как параметры запроса. Например, это можно использовать для указания версии скрипта. -
$src (string) — Полный URL или путь к скрипту относительно корневой директории WordPress, например:
http://example.com/wp-content/themes/my-theme/my-theme-script.jsЕсли скрипт зарегистрирован, этот параметр можно не указывать — используйте функции:
plugins_url()— для плагиновget_template_directory_uri()— для тем.
Для внешних доменов можно использовать протокол:
//example.com/js/their-script.js -
$deps (array) — Массив зарегистрированных скриптов, от которых зависит этот скрипт (должны быть загружены до него). По умолчанию:
array(). -
$ver (string/true/false/null) — Строка, указывающая версию скрипта. Версия добавляется к URL как строка запроса для сброса кеша. Если установить
false, будет использоваться текущая версия WordPress. Если установитьnull, добавление версии будет пропущено. По умолчанию:false. -
$in_footer (true/false) — Нужно ли подключить скрипт в подвале страницы? Обычно скрипт добавляется в
<head>документа. Еслиtrue, скрипт будет добавлен перед тегом</body>. Если из-за зависимости от других скриптов скрипт не может быть подключен в подвале, этот параметр будет проигнорирован. Для читаемости можно указать любую строку вместоtrue, например,'in_footer'. По умолчанию:false.
Примеры
Пример 1: Подключает стандартный скрипт WordPress
add_action( 'wp_enqueue_scripts', 'my_scripts_method' );
function my_scripts_method() {
wp_enqueue_script( 'scriptaculous' );
}
Пример 2: Загружает стандартный скрипт WordPress с нестандартного адреса
add_action( 'wp_enqueue_scripts', 'my_scripts_method', 11 );
function my_scripts_method() {
wp_deregister_script( 'jquery' );
wp_register_script( 'jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js' );
wp_enqueue_script( 'jquery' );
}
Пример 3: Регистрирует и подключает пользовательский скрипт, который зависит от jQuery
add_action( 'wp_enqueue_scripts', 'my_scripts_method' );
function my_scripts_method() {
$script_url = plugins_url( '/js/newscript.js', __FILE__ );
wp_enqueue_script('custom-script', $script_url, array('jquery'));
}
Пример 4: Подключает скрипт только для определённых типов страниц
add_action( 'wp', 'add_my_script_where_it_necessary' );
function add_my_script_where_it_necessary(){
if (is_single()) {
add_action( 'wp_enqueue_scripts', 'my_scripts_method' );
}
}
function my_scripts_method() {
$script_url = plugins_url( '/js/newscript.js', __FILE__ );
wp_enqueue_script( 'newscript', $script_url, ['scriptaculous'] );
}
Пример 5: Загружает скрипт, который зависит от другого скрипта
add_action( 'wp_enqueue_scripts', 'my_scripts_method' );
function my_scripts_method() {
wp_enqueue_script( 'custom-script',
get_template_directory_uri() . '/js/custom_script.js',
array( 'jquery' )
);
}
Пример 6: Загружает скрипты плагина только на его страницах
add_action( 'admin_menu', 'my_plugin_admin_menu' );
function my_plugin_admin_menu() {
$page = add_submenu_page(
'edit.php',
__( 'My plugin', 'myPlugin' ),
__( 'My plugin', 'myPlugin' ),
'manage_options',
'my_plugin-options',
'my_plugin_manage_menu'
);
add_action( 'load-' . $page, 'my_plugin_admin_scripts' );
}
function my_plugin_admin_scripts() {
wp_enqueue_script( 'my-plugin-script', plugins_url('/script.js', __FILE__) );
}
function my_plugin_manage_menu() {
// код страницы
}
Пример 7: Динамическое определение версии файла
add_action('wp_enqueue_scripts', 'my_scripts_method');
function my_scripts_method() {
wp_enqueue_script( 'custom-script',
get_template_directory_uri() . '/js/custom_script.js',
[ 'jquery' ],
filemtime( get_theme_file_path('js/custom_script.js') )
);
}
Пример 8: Удаление версии скрипта или стиля из URL
add_filter( 'script_loader_src', '_remove_script_version' );
add_filter( 'style_loader_src', '_remove_script_version' );
function _remove_script_version( $src ) {
$parts = explode( '?', $src );
return $parts[0];
}
add_filter( 'script_loader_src', 'hb_remove_wp_version_from_src' );
add_filter( 'style_loader_src', 'hb_remove_wp_version_from_src' );
function hb_remove_wp_version_from_src( $src ) {
global $wp_version;
parse_str( parse_url( $src, PHP_URL_QUERY ), $query );
if ( ! empty($query['ver']) && $query['ver'] === $wp_version ) {
$src = remove_query_arg('ver', $src);
}
return $src;
}
Изменения
С версии 3.5 WordPress использует новую конвенцию для минифицированных скриптов и стилей. Ранее у минифицированных файлов были расширения .js и .css, а у неминифицированных — .dev.js и .dev.css. Теперь минифицированные файлы имеют расширения .min.js и .min.css, а неминифицированные — просто .js и .css.
Примечания
- См. функции
WP_Dependencies::add(),WP_Dependencies::add_data(),WP_Dependencies::enqueue().