WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru

script_loader_tag хук-фильтр . WP 4.1.0

Позволяет изменить HTML код тега <script>, поставленного в очередь на вывод функцией wp_enqueue_script().

Использование

add_filter( 'script_loader_tag', 'filter_function_name_8530', 10, 3 );
function filter_function_name_8530( $tag, $handle, $src ){
	// filter...

	return $tag;
}
$tag(cтрока)
HTML код тега <script>.
$handle(cтрока)
Название скрипта (рабочее название), указываемое первым параметром в функции wp_enqueue_script().
$src(cтрока)
Ссылка на скрипт.

Примеры

#1 Для примера взглянем под капот стандартной темы Twenty Sixteen

Один из основных скриптов темы подключается так:

wp_enqueue_script( 'twentysixteen-script', get_template_directory_uri() . '/js/functions.js', array( 'jquery' ), '20160816', true );

В таком случае в фильтр передадутся переменные, содержащие следующие данные:

$tag
<script type='text/javascript' src='http://wp-test.ru/wp-content/themes/twentysixteen/js/functions.js?ver=20160816'></script>

$handle
twentysixteen-script

$tag
http://wp-test.ru/wp-content/themes/twentysixteen/js/functions.js?ver=20160816

#1.1 Ещё один из примеров

В той же теме, использование условия с помощью функции wp_script_add_data():

// подключение
wp_enqueue_script( 'twentysixteen-html5', get_template_directory_uri() . '/js/html5.js', array(), '3.7.3' );
wp_script_add_data( 'twentysixteen-html5', 'conditional', 'lt IE 9' );
$tag
<!--[if lt IE 9]>
<script type='text/javascript' src='http://wp-test.ru/wp-content/themes/twentysixteen/js/html5.js?ver=3.7.3'></script>
<![endif]-->

$handle
twentysixteen-html5

$tag
http://wp-test.ru/wp-content/themes/twentysixteen/js/html5.js?ver=3.7.3

#2 Добавление скрипту атрибутов defer или async

wp_enqueue_script( 'my-script', get_template_directory_uri() . '/js/my-script.js' );

add_filter( 'script_loader_tag', 'change_my_script', 10, 3 );
function change_my_script( $tag, $handle, $src ) {

	if ( 'my-script' === $handle ) {
		// return str_replace( ' src', ' async src', $tag );
		return str_replace( ' src', ' defer src', $tag );
	}

	return $tag;
}

Подробнее про атрибуты async и defer читайте в здесь.

Где вызывается хук

WP_Scripts::do_item()
script_loader_tag
wp-includes/class.wp-scripts.php 364
$tag = apply_filters( 'script_loader_tag', $tag, $handle, $src );

Где используется хук (в ядре WP)

Использование не найдено.
campusboy 3317youtube.com/c/wpplus
Создатель YouTube канала wp-plus, на котором делюсь своим опытом. Активный пользователь wp-kama.ru. WordPress-разработчик. Разработка сайтов и лендингов. Доработка существующих проектов. Сопровождение ресурсов.
Редакторы: Kama 7453
Комментариев нет
    Здравствуйте, !     Войти . Зарегистрироваться