WordPress как на ладони
Шаблоны, плагины и темы для настоящих поклонников Elementor. От TemplateMonster.com wordpress jino

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трока)
Ссылка на скрипт.

Для примера взглянем под капот стандартной темы 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

Ещё один из примеров в той же теме, использование условия с помощью функции 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

Примеры

#1 Добавление скрипту атрибутов 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="async" src', $tag );
		return str_replace( ' src', ' defer="defer" src', $tag );
	}

	return $tag;
}

Где используется хук

WP_Scripts::do_item() остальные хуки:

Код хука-фильтра script_loader_tag

Фрагмент из: wp-includes/class.wp-scripts.php VER 4.9.8
...

		if ( ! $src )
			return true;

		$tag = "{$cond_before}{$before_handle}<script type='text/javascript' src='$src'></script>\n{$after_handle}{$cond_after}";

		/**
		 * Filters the HTML script tag of an enqueued script.
		 *
		 * @since 4.1.0
		 *
		 * @param string $tag    The `<script>` tag for the enqueued script.
		 * @param string $handle The script's registered handle.
		 * @param string $src    The script's source URL.
		 */
		$tag = apply_filters( 'script_loader_tag', $tag, $handle, $src );

		if ( $this->do_concat ) {
			$this->print_html .= $tag;
		} else {
			echo $tag;
		}

		return true;
	}

	/**
	 * Adds extra code to a registered script.
	 *
	 * @since 4.5.0
	 *
...
campusboy 2988youtube.com/c/wpplus
Создатель YouTube канала wp-plus, на котором делюсь своим опытом. Активный пользователь wp-kama.ru. WordPress-разработчик. Разработка сайтов и лендингов. Доработка существующих проектов. Сопровождение ресурсов.
Комментариев нет
    Здравствуйте, !     Войти . Зарегистрироваться