## Функция WP_LOCALIZE_SCRIPT() │ WP 2.2.0
Функция wp_localize_script() используется для локализации (перевода) JavaScript-скрипта. Она работает только в том ��лучае, если скрипт уже был добавлен.
Функция принимает ассоциативный массив $l10n и создает объект JavaScript:
```javascript
"$object_name" = { ключ: значение, ключ: значение, ... }Важно!
Эта функция может использоваться только после того, как скрипт был зарегистрирован.
Возвращаемое значение
Функция возвращает true, если скрипт успешно локализован, и false в противном случае.
Использование
wp_localize_script( $handle, $object_name, $l10n );- $handle (строка) (обязательно) — Игровая метка для скрипта, к которому будут добавлены данные.
- $object_name (строка) (обязательно) — Имя для объекта JavaScript. Это должно быть корректное имя переменной в JS. Пример: /[a-zA-Z0-9_]+/.
- $l10n (массив) (обязательно) — Данные, которые вы передаете. Это может быть как одномерный, так и многомерный массив.
Примеры использования
Пример 1: Локализация строк
Не рекомендуется использовать wp_localize_script() для передачи данных. Лучше использовать wp_add_inline_script() для передачи данных, таких как параметры.
Неправильный способ:
wp_enqueue_script( 'my-script', 'https://url-to/my-script.js' );
wp_localize_script( 'my-script', 'myScriptData', [
    'ajax_url'  => admin_url( 'admin-ajax.php' ),
    'param_one' => 'некоторое значение',
    'param_two' => 25,
] );Правильный способ:
wp_enqueue_script( 'my-script', 'https://url-to/my-script.js' );
$js = 'window.myScriptData = ' . wp_json_encode( [
    'ajax_url'  => admin_url( 'admin-ajax.php' ),
    'param_one' => 'некоторое значение',
    'param_two' => 25,
] );
wp_add_inline_script( 'my-script', $js, 'before' );Важно добавить 'before' как третий параметр.
Теперь в JavaScript-скрипте вы можете получить доступ к данным так:
console.log( myScriptData.ajax_url );  // "https://пример.com/wp-admin/admin-ajax.php"
console.log( myScriptData.param_one );  // "некоторое значение"
console.log( myScriptData.param_two );  // 25Пример 2: Вставка глобальных данных
Это пример вставки глобальных данных JavaScript перед JS-скриптом (в данном случае, скрипт - jQuery). Используйте этот код в файле functions.php:
add_action( 'wp_enqueue_scripts', 'имя_функции', 99 );
function имя_функции() {
    wp_localize_script( 'jquery', 'object_name', array(
        'some_string' => __( 'Некоторый текст для перевода' ),
        'some_num' => '10'
    ) );
}В результате мы получим в заголовке сайта:
Пример 3: Определение файла для обработки AJAX-запросов
Функ��ия wp_add_inline_script() была введена в WP v4.5 и теперь является рекомендованным способом. wp_localize_script() следует использовать только для локализации строк.
Добавим скрипт и затем глобальные данные к нему. Здесь мы добавляем JavaScript-файл с AJAX-запросом. Файл использует переменную MyAjax.ajaxurl как URL для выполнения AJAX-запроса. Мы определим этот URL через wp_localize_script():
add_action( 'wp_enqueue_scripts', 'имя_функции' );
function имя_функции() {
    wp_enqueue_script( 'my-ajax', get_template_directory_uri() . '/js/custom_script.js' );
    wp_localize_script( 'my-ajax', 'MyAjax', [ 'ajaxurl' => admin_url( 'admin-ajax.php' ) ] );
}Мы получим:
Доступ к переменным в JavaScript осуществляется следующим образом (в данном примере 2):
// в файле custom_script.js мы можем использовать переменную: MyAjax.ajaxurl
alert( MyAjax.ajaxurl ); // выводит http://пример.com/wp-admin/admin-ajax.phpПример 4: Множественные вызовы функции
Обратите внимание, что вызов этой функции несколько раз за одну сессию с тем же именем объекта перезапишет предыдущие значения:
wp_localize_script( 'some_handle', 'object_name', $value1 );
... // код исполнен снова
wp_localize_script( 'some_handle', 'object_name', $value2 ); 
// object_name теперь установлен на $value2.Если вам нужно иметь несколько наборов данных, связанных с одним и тем же скриптом (handle), то вам нужно переименовать ваш объект.
wp_localize_script( 'some_handle', 'object_name1', $value1 );
... // код исполнен снова
wp_localize_script( 'some_handle', 'object_name2', $value2 );Примечания
- Смотрите: WP_Scripts::localize()function wp_localize_script( $handle, $object_name, $l10n ) { $wp_scripts = wp_scripts(); return $wp_scripts->localize( $handle, $object_name, $l10n ); }
Связанные функции
- wp_add_inline_script()
- wp_dequeue_script()
- wp_deregister_script()
- wp_enqueue_media()
- wp_enqueue_script()
- wp_register_script()
- wp_script_add_data()
- wp_script_is()
 
						