wp_script_add_data()
Додає дані до підключених за допомогою 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 . Може бути:
conditionaldata– використовується в wp_localize_script()group– у якій групі виводити (у шапці чи у підвалі)
- $value
(змішаний) (обов’язковий) Додаткові дані виведення скрипту на екран.
Варіанти значень при$key = 'conditional':IE– Тільки для IEIE 6– тільки для IE 6IE 7– Тільки для IE 7IE 8– Тільки для IE 8IE 9– Тільки для IE 9gt IE 6– тільки для IE більше 6lt IE 9– тільки для IE менше 9gte IE 7– тільки для IE більше або дорівнює 7lte IE 7– тільки для IE менше або дорівнює 7!IE– для всіх браузерів, крім IE версій 5-9
Приклади
#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]-->
#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>
#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>
нотатки
- Дивіться: WP_Dependencies::add_data()
список змін
| З версії 4.2.0 | Введено. |
Код wp_script_add_data() wp script add data WP 6.0.2
function wp_script_add_data( $handle, $key, $value ) {
return wp_scripts()->add_data( $handle, $key, $value );
}