WP.TEMPLATE — ШАБЛОНЫ HTML ДЛЯ JAVASCRIPT В WORDPRESS

# WP.TEMPLATE — HTML ШАБЛОНЫ ДЛЯ JAVASCRIPT В WORDPRESS

WordPress использует шаблоны везде, и JavaScript не исключение. В этой статье мы поговорим о встроенной возможности в WordPress создавать HTML-шаблоны, которые затем могут использоваться в JS. Создание и использование таких шаблонов очень просто, как и многие другие аспекты WordPress.

Существует множество способов создания шаблонов в JavaScript, включая отдельную спецификацию под названием Mustache, которая реализована во многих языках, включая JavaScript. Например, библиотека Handlebars использует эту спецификацию и немного её расширяет. Также популярна мини-библиотека Underscore.

Начиная с версии 3.5, WordPress имеет удобный механизм шаблонов для JS в своём ядре. Например, он используется в админ-панели при создании блоков для загрузчика медиафайлов. Он основан на библиотеке Underscore с немного изменённым синтаксисом для лучшего соответствия спецификации Mustache.

## Содержание

- [wp.template( id )](#wptemplate-id)
- [Возвращаемое значение](#возвращаемое-значение)
- [Заполнение шаблона (интерполяция)](#заполнение-шаблона-интерполяция)
- [Создание и генерация шаблона](#создание-и-генерация-шаблона)
- [Пример комментирования AJAX с использованием шаблона](#пример-комментирования-ajax-с-использованием-шаблона)

## wp.template( id )

Создает объект шаблона из HTML-кода. Чтобы получить готовый к использованию HTML-код в JS, необходимо передать данные в созданный объект для заполнения шаблона.

### Возвращаемое значение

Функция. Это функция, в которую нужно передать данные, которые затем будут использованы для заполнения в созданный HTML-шаблон.

### Пример использования

```javascript
var template = wp.template( id );
var HTML = template( data );

id (строка)

Идентификатор HTML-элемента, который содержит HTML-код шаблона. HTML-элемент должен иметь указанный атрибут id с префиксом tmpl-.

Например, если вы укажете "foo", то HTML-элемент должен иметь id="tmpl-foo".

data (объект)

JavaScript-объект данных, который будет использоваться для заполнения шаблона. Например: { text: 'Привет' }.

wp.template определяется в файле wp-includes/js/wp-util.js.

Заполнение шаблона (интерполяция)

В шаблоне вы можете использовать следующие конструкции:

  • {{{data.unescaped}}} — не экранированные данные.
  • {{data.escaped}} — экранированные данные.
  • <# logic #> — выполнение логики на JavaScript (eval).

Префикс данных

Данные в шаблоне представляют собой об��ект. В шаблоне нужно использовать ключ data.

Чтобы соответствовать структуре данных, возвращаемых функциями wp_send_json_success() и wp_send_json_error(), wp.template оборачивает все полученные данные в переменную data. Поэтому перед каждым параметром в шаблоне необходимо указывать data., иначе возникнет ошибка: {property} is not defined.

Пример шаблона

Создание и генерация шаблона

Создание шаблона

Чтобы шаблон не отображался в DOM-дереве, его принято создавать в теге <script> с типом text/html.

Атрибут id должен начинаться с tmpl-, и всё, что следует после этого префикса, будет использоваться в функции wp.template( 'my-template' ).

Создание шаблона в теге <script> — это обходной путь, который отлично подходит для создания HTML-элемента, который не используется браузером. Когда для браузера указан неизвестный тип, он просто игнорирует html-тег, что и нужно.

Шаблон также может быть создан в любом другом HTML-элементе (например, в <div>, который затем можно скрыть). Главное — указать атрибут id.

Существует также специальный HTML-тег <template> для создания шаблонов, однако он не поддерживается в Internet Explorer. Но в общем, он актуален.

Генерация шаблона

wp.template() возвращает функцию, поэтому не пытайтесь передать результат в HTML-элемент или выводить результат в консоль. Обычно, результат wp.template() сохраняется в переменную, а затем эта переменная используется как функция, и данные передаются в неё для заполнения шаблона.

Пример (шаблон указан выше)


var template = wp.template( 'my-template' )
var data     = { name: "Виктор" }

jQuery('.my-element').html( template( data ) )

В результате в HTML мы получим:

Привет Виктор

Пример комментирования AJAX с использованием шаблона

Создайте шаблон и включите скрипт в файл темы functions.php:


    
    

Затем вам нужно создать JS-скрипт, который отправит данные нового комментария через AJAX и получит добавленный объект комментария.

Этот объект нужно передать в шаблон, и полученный HTML-код добавить в DOM:

var singleTemplate = wp.template( 'comment-single' ), // наш шаблон
var $comments      = jQuery('.commets_wrap'),        // контейнер с комментариями
var $commentForm   = jQuery('#respond')              // форма комментария

// функция для обработки ответа AJAX
function commentSuccess( data ){
    // создаём HTML используя шаблон
    $comments.append( singleTemplate( data ) );

    // сбрасываем форму
    $commentForm.get(0).reset();
}

Таким образом, вы можете использовать шаблоны в WordPress для динамического отображения контента, что позволяет создавать более интерактивные и привлекательные страницы.

Leave a Reply

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