Хук wp_ajax_{action} в WordPress: Обработка AJAX-запросов

Хук 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 );
}

Важные моменты:

  1. Регистрация обработчика: Обратите внимание, что мы добавили два обработчика: один для авторизованных пользователей (wp_ajax_get_latest_posts), другой для неавторизованных (wp_ajax_nopriv_get_latest_posts). Это позволяет обрабатывать запросы как для пользователей, так и для гостей.

  2. Функция обратного вызова: В функции get_latest_posts_callback мы получаем последние посты и формируем массив ответа.

  3. Отправка ответа: Используя wp_send_json(), мы возвращаем данные в формате JSON, что удобно для обработки на стороне клиента.

Почитаем еще?: