wp_script_add_data() WP 4.2.0

Додає дані до підключених за допомогою wp_enqueue_script() скриптів. Наприклад, коли потрібно виводити скрипт тільки для IE 6 або lt IE 9 (менше IE 9).

Працює тільки якщо скрипт вже був зареєстрований або доданий до черги на висновок – дивіться wp_enqueue_script() .

Поки що можна вказати лише додаткові дані для підключення скрипта для вказаних браузерів. Тобто. $key може дорівнювати тільки conditional, а $value рядку “IE 6”, “lte IE 7” і т.д.

Для стилів є аналогічна функція: wp_style_add_data()

Використовуйте wp_localize_script() , коли потрібно додати додаткові дані (JS об’єкт з даними) перед скриптом, що підключається.

Хуків немає.

Повертає

true|false. True, якщо дані додані. false при невдачі.

Використання

wp_script_add_data($handle, $key, $value);
$handle
(рядок) (обов’язковий)
ID, назва скрипта, до якого потрібно додати дані. Тут потрібно вказувати перший параметр
wp_enqueue_script() або
wp_register_script() .
$key
(рядок) (обов’язковий)

Назва типу даних, що додаються. На основі цього параметра буде оброблятись значення вказане в $value . Може бути:

  • conditional
  • data– використовується в wp_localize_script()
  • group– у якій групі виводити (у шапці чи у підвалі)
$value
(змішаний) (обов’язковий)

Додаткові дані виведення скрипту на екран.
Варіанти значень при $key = 'conditional':

  • IE– Тільки для IE
  • IE 6– тільки для IE 6
  • IE 7– Тільки для IE 7
  • IE 8– Тільки для IE 8
  • IE 9– Тільки для IE 9
  • gt IE 6– тільки для IE більше 6
  • lt IE 9– тільки для IE менше 9
  • gte IE 7– тільки для IE більше або дорівнює 7
  • lte IE 7– тільки для IE менше або дорівнює 7
  • !IE– для всіх браузерів, крім IE версій 5-9

Приклади

0

#1 Підключимо скрипт тільки для IE менше 9 версії

Цей приклад показує, як додати умову для підключення зареєстрованого скрипта. Наприклад додамо умову <!--[if lt IE 9]>...<![endif]-->– для IE менше 9.

add_action( 'wp_enqueue_scripts', 'my_enqueue_scripts');
function my_enqueue_scripts() {
	// Підключаємо спеціальні скрипти лише для Internet Explorer 6
	wp_enqueue_script('pngfix', get_template_directory_uri() .'js/pngfix.js');
	wp_script_add_data('pngfix', 'conditional', 'lt IE 9');
}

В результаті отримаємо у head документа

<!--[if lt IE 9]>
<script type='text/javascript' src='http://example.com/wp-content/themes/theme/js/pngfix.js?ver=4.5.2'></script>
<![endif]-->
0

#2 Додавання атрибуту async до зареєстрованого скрипту

add_action( 'wp_enqueue_scripts', 'my_enqueue_scripts');
function my_enqueue_scripts() {
	wp_enqueue_script( 'app', get_template_directory_uri() . 'js/app.js' );

	// Додаємо async до зареєстрованого скрипту.
	wp_script_add_data( 'app', 'async', true );
}

add_filter( 'script_loader_tag', 'my_script_loader_tag', 10, 2);
function my_script_loader_tag( $tag, $handle ) {
	// Додаємо атрибут async до зареєстрованого скрипту.
	if ( wp_scripts()->get_data( $handle, 'async' ) ) {
		$tag = str_replace( '></', 'async></', $tag );
	}

	return $tag;
}

В результаті отримаємо у head документа

<script type='text/javascript' src='http://example.com/wp-content/themes/theme/js/app.js?ver=4.5.2' async></script>
0

#3 Додавання атрибута defer до зареєстрованого скрипту

add_action( 'wp_enqueue_scripts', 'my_enqueue_scripts');
add_filter( 'script_loader_tag', 'filter_script_loader_tag', 10, 2);

function my_enqueue_scripts() {

	wp_enqueue_script( 'app', get_template_directory_uri() . 'js/app.js' );

	// Додаємо defer до зареєстрованого скрипту.
	wp_script_add_data('app', 'defer', true);
}

function filter_script_loader_tag( $tag, $handle ) {

	foreach ( [ 'async', 'defer' ] as $attr ) {

		if ( ! wp_scripts()->get_data( $handle, $attr ) ) {
			continue;
		}

		// Prevent adding attribute when already added in #12009.
		if ( ! preg_match( ":s$attr(=|>|s):", $tag ) ) {
			$tag = preg_replace(':(?=></script>):', "$attr", $tag, 1);
		}

		// Тільки allow async or defer, не both.
		break;
	}

	return $tag;
}

В результаті отримаємо у head документа

<script type='text/javascript' src='http://example.com/wp-content/themes/theme/js/app.js?ver=4.5.2' defer></script>

нотатки

список змін

З версії 4.2.0Введено.

Код wp_script_add_data() WP 6.0.2

function wp_script_add_data( $handle, $key, $value ) {
	return wp_scripts()->add_data( $handle, $key, $value );
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *