wp_localize_script

Добавляет дополнительные данные перед указанным скриптом, который должен быть в очереди на вывод.

Скрипт, к которому подключается эта функцию обязательно должен быть добавлен на вывод с помощью wp_enqueue_script().

Изначально функция была создана для локализации строк скрипта. Т.е. перед ним определяются глобальные переменные строк, со значениями нужного перевода, а затем эти строки используются в основном скрипте. Но учитывая особенность работы скрипта, его можно использовать и для других целей, не только для локализации – например, можно перед нужным скриптом определить динамические данные через PHP, а затем использовать их в основном скрипте.

Заметка: wp_localize_script() нужно вызывать:
  • после того как скрипт был зарегистрирован функцией wp_register_script().
  • или добавлен в очередь на вывод с помощью wp_enqueue_script()
  • или, если скрипт уже существует в WordPress.

Если скрипт уже выведен на экран и только потом вызывается wp_localize_script(), то функция ничего не выведет.


Исключение. Если в $handle указать jquery то локализация будет подключаться к скрипту jquery-core.

Но если вы переопределили подключение jquery (указали что подключать его нужно с внешнего ресурса, т.е. удалил базовый вариант подключения в WordPress и указали свой), то скрипт jquery-core будет отключен, а это значит, что локализация не сработает, потому что она подключается к jquery-core, которого уже нет…

Хуков нет.

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

<?php wp_localize_script( $handle, $object_name, $l10n ); ?>
$handle(строка) (обязательный)
Название скрипта, перед которым будут добавлены данные. Скрипт должен быть зарегистрирован заранее.
По умолчанию: нет
$object_name(строка) (обязательный)
Название Javascript объекта, который будет содержать данные. Название должно быть уникальным, чтобы не вызвать конфликтов с другими скриптами! В названии нельзя использовать тире , только латиницу a-zA-Z, подчеркивание _, а также можно примерять метод “верблюжьегоРегстра” (CamelCase).
По умолчанию: нет
$l10n(массив) (обязательный)
Сами данные. Данные могут быть как в одномерном, так и в многомерном массиве.
По умолчанию: нет

Примеры

#1 Вставка глобальных данных

Пример вставки глобальных javascript данных перед рабочим скриптом (в примере рабочий скрипт это jquery). Вставляем этот код в functions.php:

$translation_array = array( 
	 'some_string' => __( 'Some string to translate' ), 
	 'a_value' => '10' 
);
wp_localize_script( 'jquery', 'object_name', $translation_array );

Получим в head части сайта:

wp_enqueue_script( 'my-ajax-request', get_template_directory_uri() . '/js/custom_script.js' );
wp_localize_script( 'my-ajax-request', 'MyAjax', array( 'ajaxurl' => admin_url( 'admin-ajax.php' ) ) );
<?php
function wp_localize_script( $handle, $object_name, $l10n ) {
	global $wp_scripts;
	if ( ! ( $wp_scripts instanceof WP_Scripts ) ) {
		_wp_scripts_maybe_doing_it_wrong( __FUNCTION__ );
		return false;
	}

	return $wp_scripts->localize( $handle, $object_name, $l10n );
}

Комментарии:


Оставить комментарий

Your email address will not be published. Required fields are marked *