Хук wp_default_scripts
позволяет разработчикам изменять и настраивать стандартные скрипты WordPress во время инициализации класса WP_Scripts
. Это может быть полезно, если вы хотите зарегистрировать свои скрипты, изменить параметры по умолчанию или убрать ненужные зависимости.
do_action_ref_array( 'wp_default_scripts', WP_Scripts $wp_scripts );
Хук wp_default_scripts
вызывается, когда экземпляр WP_Scripts
инициализирован. Это позволяет разработчикам управлять зарегистрированными скриптами, добавлять новые или изменять существующие.
Параметры
- $wp_scripts (
WP_Scripts
): Экземпляр классаWP_Scripts
, передаваемый по ссылке.
Пример 1: Добавление кастомного скрипта с зависимостью от jQuery
Этот пример показывает, как зарегистрировать новый скрипт, который будет доступен для использования в любом месте темы или плагина.
add_action( 'wp_default_scripts', 'register_custom_script' );
function register_custom_script( $scripts ) {
// Аргументы: 'handle', 'url', 'dependencies', 'version', 'in_footer'
$scripts->add( 'my-custom-script', '/path/to/my-custom-script.js', array( 'jquery' ), '1.0', true );
}
// Теперь можно использовать этот скрипт с помощью wp_enqueue_script() в теме или плагине
add_action( 'wp_enqueue_scripts', function () {
wp_enqueue_script( 'my-custom-script' );
} );
В этом примере мы добавили скрипт my-custom-script
с зависимостью от jQuery и версией 1.0
, который будет загружаться в нижней части страницы.
Пример 2: Отключение jquery-migrate
для уменьшения нагрузки
По умолчанию WordPress подключает jquery-migrate
вместе с jQuery, однако, если ваш проект не требует этой библиотеки, можно ее отключить.
add_action( 'wp_default_scripts', 'remove_jquery_migrate' );
function remove_jquery_migrate( $scripts ) {
if ( isset( $scripts->registered['jquery'] ) ) {
$jquery = $scripts->registered['jquery'];
if ( $jquery->deps ) {
$jquery->deps = array_diff( $jquery->deps, array( 'jquery-migrate' ) );
}
}
}
В данном примере мы проверяем, зарегистрирован ли jquery
, и удаляем jquery-migrate
из его зависимостей, что позволяет сэкономить ресурсы на загрузке лишнего кода.
Пример 3: Изменение версии стандартного скрипта
В этом примере мы изменим версию скрипта jquery
на кастомную, что может быть полезно, если требуется обновленная или специфическая версия библиотеки.
add_action( 'wp_default_scripts', 'change_jquery_version' );
function change_jquery_version( $scripts ) {
if ( isset( $scripts->registered['jquery'] ) ) {
$scripts->registered['jquery']->ver = '3.6.0';
}
}
Здесь мы меняем версию скрипта jquery
на 3.6.0
. Это полезно, если вы хотите использовать конкретную версию библиотеки для совместимости с вашим кодом.
Пример 4: Добавление кастомного скрипта с несколькими зависимостями
Иногда бывает нужно добавить скрипт, который зависит от нескольких других библиотек. Например, добавим кастомный скрипт, зависящий от jquery
и wp-util
.
add_action( 'wp_default_scripts', 'register_multi_dependency_script' );
function register_multi_dependency_script( $scripts ) {
$scripts->add( 'custom-multi-dep-script', '/path/to/custom-script.js', array( 'jquery', 'wp-util' ), '1.2', true );
}
// Подключаем скрипт в нужных местах
add_action( 'wp_enqueue_scripts', function () {
wp_enqueue_script( 'custom-multi-dep-script' );
} );
В этом примере скрипт custom-multi-dep-script
будет загружен только после загрузки jquery
и wp-util
, что обеспечивает корректную работу всех зависимостей.
Пример 5: Удаление встроенного скрипта WordPress
Если нужно полностью убрать стандартный скрипт, например, wp-embed
, который используется для встраивания контента, то это можно сделать так:
add_action( 'wp_default_scripts', 'remove_wp_embed_script' );
function remove_wp_embed_script( $scripts ) {
if ( isset( $scripts->registered['wp-embed'] ) ) {
unset( $scripts->registered['wp-embed'] );
}
}
Этот пример удаляет регистрацию скрипта wp-embed
, что может быть полезно для улучшения производительности, если встроенный контент не используется на сайте.
Заключение
Хук wp_default_scripts
позволяет гибко управлять стандартными скриптами WordPress, что дает возможность добавлять, изменять или удалять скрипты в зависимости от требований проекта.