К основному контенту

Создание обработчика AJAX запроса в WordPress


Обработка AJAX запроса в WordPress значительно отличается от привычной обработки в PHP. Давайте попробуем разобраться в специфике этого процесса.


Обработка запроса может быть 2 видов и отличается префиксами: 
  • только для авторизованных пользователей wp_ajax;
  • только для не авторизованных пользователей wp_ajax_nopriv
Если вам нужно сделать так, чтобы выполнялись одни и те же действия и для тех и для тех типов пользователей, следует повесить одну функцию на оба хука.
Префикс wp_ajax вначале имени хука даст WordPress понять, что мы пытаемся создать обработчик AJAX-запроса.

Давайте создадим простой AJAX запрос на JS с использованием JQuery.

  1.  jQuery(document).ready( function (){
  2.        jQuery.ajax({
  3.        url: "$url",
  4.        method: "GET",
  5.        data: { action: "ajax_handler", ajax_var: "example"},
  6.        dataType: "json"
  7.       });
  8. });

url мы получаем применив функцию WordPress admin_url в части PHP кода: $url = admin_url('admin-ajax.php').
В data добавляем action который является названием функции-обработчика Ajax запроса,  приведенного ниже:

  1. add_action( 'wp_ajax_nopriv_ajax_handler', 'ajax_handler_callback' );
  2. function ajax_handler_callback()
  3. {
  4.   if($_GET['ajax_var'])
  5.   wp_send_json(array(success => true));
  6.   wp_die();
  7. }

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

Пример обработчика для авторизованных пользователей:

  1. add_action( 'wp_ajax_ajax_handler', 'ajax_handler_callback' );
  2. function ajax_handler_callback()
  3. {
  4.     if($_GET['ajax_var'])
  5.     wp_send_json(array(success => true));
  6.     wp_die();
  7. }
}

Комментарии

Популярные сообщения из этого блога

Прата С. Решение задач 6 главы

На решение этих задач у меня ушло 2 дня. Становится все интереснее и интереснее! и черт возьми, я наконец-то поняла работу с файлами! прошу прощения за корявые условия. просто в нормальном формате электронной книги у меня нет, потому скрины задач просто пропущены через Файнридер.

4 глава, Лафоре Р.

*1. Номер телефона, например (212) 767—8900, можно условно разделить на три части: код города (212), номер телефонной станции (767) и номер абонента (8900). Напишите программу с использованием структуры, поз- воляющую раздельно хранить эти три части телефонного номера. Назо- вите структуру phone. Создайте две структурные переменные типа phone. Инициализацию одной из них произведите сами, а значения для другой запросите с клавиатуры. Затем выведите содержимое обеих переменных на экран. Результат работы программы должен выглядеть приблизитель- но так: Введите код города, номер станции и номер абонента: 415 555 1212 Мой номер (212) 767-8900 Ваш номер (415) 555-1212

Laravel контракты, сервис провайдеры, сервис-контейнеры, фасады, сервисы и все-все-все

Если вам пока страшно от подобных словосочетаний, то не беспокойтесь, это абсолютно нормально. Если вы уже не новичок в Laravel и до сих пор сами от себя скрываете тот факт, что все вышеперечисленные системы надо таки осознать и понять – это норма. Все мы там были.