Хук wp_ajax_{action}
в WordPress позволяет обрабатывать AJAX-запросы, отправленные из админки или с публичной части сайта. Это дает возможность взаимодействовать с сервером без перезагрузки страницы, что значительно улучшает пользовательский опыт.
Как это работает
Когда вы отправляете AJAX-запрос с определенным действием (action), WordPress ищет обработчик для этого действия. Если вы зарегистрировали его, то WordPress выполнит вашу функцию и вернет результат.
Пример использования
Рассмотрим пример, где мы отправляем AJAX-запрос для получения последних постов. Сначала добавим код для обработки AJAX-запроса в файл functions.php
вашей темы или плагина.
// Регистрируем обработчик AJAX-запроса
add_action( 'wp_ajax_get_latest_posts', 'get_latest_posts_callback' );
add_action( 'wp_ajax_nopriv_get_latest_posts', 'get_latest_posts_callback' );
function get_latest_posts_callback() {
// Получаем последние 5 постов
$args = array(
'posts_per_page' => 5,
);
$latest_posts = get_posts( $args );
// Подготавливаем данные для ответа
$response = array();
foreach ( $latest_posts as $post ) {
setup_postdata( $post );
$response[] = array(
'title' => get_the_title( $post ),
'link' => get_permalink( $post ),
);
}
wp_reset_postdata();
// Отправляем ответ в формате JSON
wp_send_json( $response );
}
Важные моменты:
Регистрация обработчика: Обратите внимание, что мы добавили два обработчика: один для авторизованных пользователей (
wp_ajax_get_latest_posts
), другой для неавторизованных (wp_ajax_nopriv_get_latest_posts
). Это позволяет обрабатывать запросы как для пользователей, так и для гостей.Функция обратного вызова: В функции
get_latest_posts_callback
мы получаем последние посты и формируем массив ответа.Отправка ответа: Используя
wp_send_json()
, мы возвращаем данные в формате JSON, что удобно для обработки на стороне клиента.