Написание своего плагина для WordPress. Часть 8. Используем AJAX в админпанели

Конечно, можно написать плагин и без AJAX, и он будет прекрасно работать. Только перезагрузка страницы каждый раз при обмене данными с сервером вряд ли доставит удовольствие пользователю.

Поэтому даже для админпанели всё-таки лучше использовать AJAX.

В качестве примера для рассмотрения будем использовать плагин total-old-revisions-cleaner, который использует AJAX в своём интерфейсе в админпанели.

Серверная часть

Для начала необходимо создать функцию или метод класса, который будет реализовывать серверную логику и добавить его как обработчик AJAX запроса в WordPress при помощи API функции add_action.

Ниже приведён пример для добавления метода класса.

Функция add_action принимает два аргумента. Название действия и массив, который включает в себя указатель на объект класса, членом которого является метод обработчик запроса и имя этого метода в строковом формате.

Название обработчика должно соответствовать одному из двух шаблонов: wp_ajax_ actionname или wp_ajax_nopriv_actionname. Где actionname собственно название действия (уникальное), а остальная часть префикс, который определяет доступ к выполнению запроса.

Отметка nopriv в префиксе обозначает, что запрос можно выполнить без авторизации на сайте.

Так как интерфейс рассматриваемого плагина предназначен для админпанели (более того, сам плагин выполняет служебные функции), то для обработчика действия выбрано название по первому шаблону.

Добавление обработчика выполняется обычным вызовом метода класса после создания объекта.

Клиентская часть

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

Операция return false в обработчике события onsubmit блокирует стандартную отправку формы. А, сама кнопка отправки получила обработчик события onclick (функция SendTRCData), который и станет заменой стандартному поведению.

Код обработчика добавляется при помощи метода actionCleaningJs, который в приведённом выше примере вызывается сразу перед отрисовкой формы. Последний представляет собой обычную обработку AJAX на jQuery. Но есть две особенности.

Первая из них, это переменная ajaxurl, которая содержит адрес WordPress, для получения всех AJAX запросов. Эта переменная определена только в админпанели. На сайте этот адрес нужно получать вручную.

Вторая особенность, это структура данных, отправляемых на сервер. В JSON добавляется обязательный параметр action, который содержит имя действия, которое было указано при добавлении обработчика в функции add-action, но без префикса.

Код метода actionCleaningJs выглядит следующим образом:

Полный код класса плагина в статье не приводится, т.к. он доступен в репозитории WordPress ссылке (статья написана на основе версии плагина 4.1).

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

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