Особенности применения JavaScript в WordPress

Существуют две проблемы при написании скриптов JavaScript для WordPress:

  • Дублирование кода: должна существовать уверенность, что данный скрипт уже не включен в другой плагине или теме. Например, jQuery, уже может где-то использоваться.
  • Интернационализация: как подключить другие языки, если они используются внутри скриптов JavaScript.

Для решения таких задач существуют функции ядра WordPress wp_register_script(), wp_enqueue_script() и wp_localize_script().

Оглавление

  1. Регистрация скрипта
  2. Постановка скрипта в очередь на выполнение
  3. Интернационализация (локализация) в скриптах
  4. Код в целом

Регистрация скрипта:

wp_register_script($handle, $src,[ $deps, $ver, $in_footer])
$handle – уникальное имя шрифта (string)
$src – url адрес шрифта (string)
  

При необходимости можно удалить ранее регистрированный шрифт wp_deregister_script().

Постановка скрипта в очередь на выполнение:

Функция wp_enqueue_script($handle,[ $src, $deps, $ver, $in_footer]). Вы можете, убрать скрипт из очереди на выполнение wp_deenqueue_script() или проверить состояние wp_script_is().

Для постановки скриптов в очередь на выполнение наиболее часто используются следующие хуки:

  • wp_enqueue_scripts для установки скрипта в frontend.
  • admin_enqueue_scripts для установки скрипта в backend.
  • login_enqueue_scripts при установке на панель входа.

Например:

wp_register_script('k3towp-js', 'k3towp.js');
	function k3towp_script_loader() {
		wp_enqueue_script('k3towp-js', 'k3towp.js',false);
	}
	add_action('wp_enqueue_scripts' 'k3towp_script_loader');	


Функция wp_enqueue_script() добавляет скрипт k3towp.js на HTML страницу.

Интернационализация (локализация) в скриптах:

Все проблемы просто решаются функцией wp_localize_script(). Рассмотрим пример:

$l10n_data = array(
			'count' => __('Counter items', 'k3towp-jscript'),
			'number' => __('Number of items', 'k3towp-jscript'),
			'done' => __('Number before %d after %d', 'k3towp-jscript')
	);

	wp_localize_script('k3towp-js', /* имя шрифта при регистрации*/
		 'k3towp_object',			/*имя JS объекта*/
		 $l10n_data);         /* данные для перевода на языки*/
		 

Фуннкция wp_localize_script() выведет на HTML страницу что-то типа

<script>
  var k3towp_object = {"count":"Counter items",
                       "number":"Number of items",
                       "done":"Number before %d after %d"};   
</script> 

После регистрации, постановки на учет и локализации скрипта вы можете пользоваться объектом для локализации:

alert(k3towp_object.count)

Код в целом

Файл в коде PHP:

//пусть это будет в дирктории плагина
$pth = plugin_dir_url(__FILE__);
wp_register_script('k3towp-js', $pth.'k3towp.js');

//загружаем скрипт
function k3towp_script_loader() {
	$pth = plugin_dir_url(__FILE__);
	wp_enqueue_script('k3towp-js', $pth.'k3towp.js',false);
}

//хук - admin_enqueue_scripts работает в панели администратора
add_action('admin_enqueue_scripts', 'k3towp_script_loader');

//данные для локализации
$l10n_data = array(
		'count' => __('Counter items', 'k3towp-jscript'),
		'number' => __('Number of items', 'k3towp-jscript'),
		'done' => __('Number before %d after %d', 'k3towp-jscript')
);


wp_localize_script('k3towp-js', /* имя шрифта при регистрации*/
'k3towp_object',			/*имя JS объекта*/
$l10n_data);         /* данные для перевода на языки*/


И файл в коде JavaScript (k3towp.js) в том же каталоге, например:

	alert(k3towp_object.count)
	

Рад, если был полезен. Готов оказать помощь.

admin@allrecall.ru

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Найти на сайте
Со страниц сайта
Метки
хохмаУмные мыслиармейский юморДела семейныеДокторинформацияой болитфольклорВовочка & kidsВадим ЗверевПолитическиеСтатусы ВКотактеСобрание скороговорокБольшие и малые народностиПро животныхЗаконы МерфиженщиныПро это...Забойный наборНиколай ФоменкоВсякая всякотаалкоманы-наркоголикиВиктор ШендеровичПро услуги и рестораныБородатые анекдотыавтомобилистыТуристы и турыИскусство и киноКозьма ПрутковПро студентовПро работуОмар ХайямЧерномырдинСтатусы про женщин и мужчинВ общественном транспортеПро сумасшедшихСтанислав Ежи ЛецКриминальныеПро ШтирлицаСтас ЯнковскийСмешные статусыДурацкие законыПро юристовпро самолетыПечалькаПро братковХорошие советыНе та ориентацияМарк ТвенСтатусы про жизньНа селеКрасноармейскиеГусары и поручикиДразнилкиИностранные анекдотыСказочныеХрюн МоржовФрансуа де ЛарошфукоЧерный юморЖан-Жак РуссоОхота и рыбалкаПрограммистыЛеди и джентельменыСпортМультяшкиНа бога надейся...БизнесСчиталкиУильям ШекспирГеоргий ФрумкерФрансис БэконШутливая лотереяДикий западПраздникиБедные и богатыеРаневскаяПьер Огюстен Карон де БомаршеСоветы и ответыДикариИсторические анекдотыНикколо МакиавеллиНаполеон БонапартЗагадкиsongswordpresstraditionalpluginпоговоркиC#старостьЧастушкиmysqlbackendjavascripthostingsshajaxphpстатистикапандемия
Больше Меньше
Архивы
Рейтинг@Mail.ru