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

Создание обработчика 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

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

Эта глава по циклам меня удивила. я  с неким пренебрежением отнеслась к ней, т.к. думала что и так все знаю по этой теме. но Прата так глубоко и в подробностях объяснил тему, что я заново переосмыслила циклы и выражения. было очень много интересных подробностей, которые мне никто не мог толком объяснить. и кстати, парочка задач была над которыми я поломала голову. особенно понравился такой акцент на указателях. как говорится, приучают с малых лет. понять - поняла, но путаюсь в них до сих пор нечеловечески.