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

В предыдущей статье мы рассмотрели основы работы с AJAX в WordPress и использование AJAX в админпанели. В этой статье мы рассмотрим работу с AJAX на стороне сайта.

В процессе рассмотрения мы будем во многом опираться на материалы предыдущей статьи и статьи посвящённой виджетам WordPress. Поэтому если вы не читали предыдущую статью или незнакомы с технологией виджетов, настоятельно рекомендуется прочесть эти статьи (ссылки также продублированы в конце). Просто иначе вам вероятно будет сложно понять изложенное ниже.

Использование AJAX на сайте имеет две особенности:

  • На стороне фронтэнда в WordPress не определена JavaScript переменная ajaxurl;
  • AJAX запрос в зависимости от решаемой задачи может быть отправлен зарегистрированным пользователем после входа на сайт (для админпанели другие варианты исключены), незарегистрированным пользователем или допускается и то и другое одновременно.

Исходя из этого и строится работа с AJAX в плагине.

Сама по себе обработка запроса, поступившего с клиентской части, и регистрация обработчиков ничем не отличается от того, что было рассмотрено нами ранее. Однако следует учесть, что хук WordPress «wp_ajax_nopriv_actionname» разрешает отправку запроса только для незарегистрированных пользователей сайта. То есть, если пользователь выполнит процедуру входа и после этого попытается отправить запрос, для которого установлен только этот хук, у него ничего не получится, а в консоли браузера можно будет увидеть ошибку 400 «Bad request».

Поэтому, если вам нужно чтобы запрос работал для всех пользователей, необходимо добавить хук «wp_ajax_actionname», который мы использовали ранее для админпанели.

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

Вместо http://wptest необходимо указать домен вашего сайта.

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

Далее приведён пример простейшего плагина, использующего AJAX. Пояснения в коде минимальны, т.к. все соответствующие вопросы уже разобраны в этой и предыдущих статьях.

Главный файл плагина:

Виджет плагина:

Работа плагина:

Работа плагина

Источники

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

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

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