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

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

Комментарии

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

ВОПРОС К ЧИТАТЕЛЯМ

Уважаемые читатели моего блога и просто проходящие мимо! У меня появилась идея заняться созданием уроков по интересующим вас темам. Предпочтительно на C++, но не ограничиваясь ими, я хочу поделиться своими знаниями не только в виде готового кода но и подробными объяснениями что к чему. Прошу вас, если вы имеете идею и хотели бы разобраться в какой-то теме - отпишитесь в комментариях, что было бы вам интересно. Постараюсь помочь. 

7 глава, Лафоре Р

*1. Напишите функцию reversit(), которая переворачивает строку (массив типа char). Используйте цикл for, который меняет местами первый и последний символы, затем следующие и т. д. до предпоследнего. Строка должна пере- даваться в функцию reversit() как аргумент. Напишите программу для выполнения функции reversit(). Программа долж- на принимать строку от пользователя, вызывать функцию reversit(), а за- тем выводить полученный результат. Используйте метод ввода, который позволяет использовать внутренние пробелы. Протестируйте программу на примере фразы «Аргентина манит негра».

6 глава, Лафоре Р

*1. Создайте класс Int, имитирующий стандартный тип int. Единственное поле этого класса должно иметь тип int. Создайте методы, которые будут устанавливать значение поля, равным нулю, инициализировать его целым значением, выводить значение поля на экран и складывать два значения типа Int. Напишите программу, в которой будут созданы три объекта класса Int, два из которых будут инициализированы. Сложите два инициализирован- ных объекта, присвойте результат третьему, а затем отобразите результат на экране.