Обработка AJAX запроса в WordPress значительно отличается от привычной обработки в PHP. Давайте попробуем разобраться в специфике этого процесса.
Обработка запроса может быть 2 видов и отличается префиксами:
- только для авторизованных пользователей wp_ajax;
- только для не авторизованных пользователей wp_ajax_nopriv.
Если вам нужно сделать так, чтобы выполнялись одни и те же действия и для тех и для тех типов пользователей, следует повесить одну функцию на оба хука.
Префикс wp_ajax вначале имени хука даст WordPress понять, что мы пытаемся создать обработчик AJAX-запроса.
Префикс wp_ajax вначале имени хука даст WordPress понять, что мы пытаемся создать обработчик AJAX-запроса.
Давайте создадим простой AJAX запрос на JS с использованием JQuery.
url мы получаем применив функцию WordPress admin_url в части PHP кода: $url = admin_url('admin-ajax.php').
Этот обработчик, как уже говорилось ранее, относится к обработчикам для неавторизованных пользователей. Он просто отсылает success на сторону сервера.
Пример обработчика для авторизованных пользователей:
- jQuery(document).ready( function (){
- jQuery.ajax({
- url: "$url",
- method: "GET",
- data: { action: "ajax_handler", ajax_var: "example"},
- dataType: "json"
- });
- });
url мы получаем применив функцию WordPress admin_url в части PHP кода: $url = admin_url('admin-ajax.php').
В data добавляем action который является названием функции-обработчика Ajax запроса, приведенного ниже:
- add_action( 'wp_ajax_nopriv_ajax_handler', 'ajax_handler_callback' );
- function ajax_handler_callback()
- {
- if($_GET['ajax_var'])
- wp_die();
- }
Этот обработчик, как уже говорилось ранее, относится к обработчикам для неавторизованных пользователей. Он просто отсылает success на сторону сервера.
Пример обработчика для авторизованных пользователей:
- add_action( 'wp_ajax_ajax_handler', 'ajax_handler_callback' );
- function ajax_handler_callback()
- {
- if($_GET['ajax_var'])
- wp_die();
- }
}
Комментарии
Отправить комментарий