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

Создание обработчика 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 дня. Становится все интереснее и интереснее! и черт возьми, я наконец-то поняла работу с файлами! прошу прощения за корявые условия. просто в нормальном формате электронной книги у меня нет, потому скрины задач просто пропущены через Файнридер.

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

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

Прата С. Решение 3 и 4 главы

Повторюсь, взяла только интересные мне задания, т.е. с элементами того что поняла плохо/не встречала ранее. Сделала за сегодня. с удовольствием отмечаю что сдвиги  в положительную сторону  хотя-бы в стиле есть . в 4 главе ясно объяснено почему при вводе нескольких строк начинаются проблемы, и как этого избежать, подробно описана работа с входным потоком. Как работать со строками стиля Си и класса String, разница. для себя я сделала выводы что лучше всего, конечно-же класс string. намного меньше мороки. и метод ввода getline в обоих случаях. в задачах разница проиллюстрирована. и кстати, указатели больше не вызывают у меня ужаса и трепета. много нового узнала о видах структур. эта глава расставила все по местам в моей голове. правда, зачем в задачи на СР втиснута работа с массивом array - загадка. он ведь толком не объяснен, но понять его интуитивно можно, правда, зачем его использовать не зная тонкостей, как обычный массив с немного иным объявле...