Как использовать AJAX в WordPress для обновления контента без перезагрузки страницы

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

Что такое AJAX и зачем он нужен в WordPress

AJAX (Asynchronous JavaScript and XML) — это технология, позволяющая обмениваться данными с сервером асинхронно, без полной перезагрузки страницы. В WordPress AJAX часто используется для динамической подгрузки контента, отправки форм, реализации лайков, фильтров и других интерактивных элементов.

Стандартный подход в WordPress предполагает использование admin-ajax.php — специального обработчика, через который проходят AJAX-запросы. Это обеспечивает безопасность и совместимость.

Основные шаги для реализации AJAX в WordPress

Для примера создадим AJAX-запрос, который будет загружать список последних 5 постов без перезагрузки страницы.

1. Подключение скрипта и передача параметров

Сначала нужно зарегистрировать и подключить JavaScript-файл в теме или плагине, а также передать ему URL для AJAX-запроса и nonce для безопасности.

function wproot_enqueue_scripts() {
    wp_enqueue_script('wproot-ajax-script', get_template_directory_uri() . '/js/wproot-ajax.js', ['jquery'], null, true);
    wp_localize_script('wproot-ajax-script', 'wproot_ajax_obj', [
        'ajax_url' => admin_url('admin-ajax.php'),
        'nonce' => wp_create_nonce('wproot_nonce')
    ]);
}
add_action('wp_enqueue_scripts', 'wproot_enqueue_scripts');

wp_localize_script позволяет передать PHP-переменные в JS. Здесь мы передаем URL и nonce.

2. Создание JavaScript для отправки AJAX-запроса

В файле wproot-ajax.js напишем код, который по клику на кнопку будет запрашивать последние посты и выводить их.

jQuery(document).ready(function($) {
    $('#wproot-load-posts').on('click', function(e) {
        e.preventDefault();
        $.ajax({
            url: wproot_ajax_obj.ajax_url,
            type: 'POST',
            data: {
                action: 'wproot_load_posts',
                nonce: wproot_ajax_obj.nonce
            },
            success: function(response) {
                if(response.success) {
                    $('#wproot-posts-container').html(response.data);
                } else {
                    alert('Ошибка загрузки');
                }
            },
            error: function() {
                alert('Ошибка AJAX-запроса');
            }
        });
    });
});

Здесь мы используем jQuery для отправки POST-запроса с параметром action, который указывает, какой PHP обработчик запускать.

3. Обработка AJAX-запроса в PHP

В functions.php или файле плагина добавляем функцию, которая обработает запрос и вернет данные в формате JSON.

function wproot_load_posts() {
    check_ajax_referer('wproot_nonce', 'nonce');

    $args = [
        'posts_per_page' => 5,
        'post_status' => 'publish'
    ];
    $posts = get_posts($args);

    if(empty($posts)) {
        wp_send_json_error('Посты не найдены');
    }

    $output = '<ul>';
    foreach($posts as $post) {
        $output .= '<li><a href="' . get_permalink($post) . '">' . esc_html($post->post_title) . '</a></li>';
    }
    $output .= '</ul>';

    wp_send_json_success($output);
}
add_action('wp_ajax_wproot_load_posts', 'wproot_load_posts');
add_action('wp_ajax_nopriv_wproot_load_posts', 'wproot_load_posts');

Обратите внимание на две строчки с add_action. Первая обрабатывает запросы авторизованных пользователей, вторая — гостей.

Безопасность и оптимизация AJAX-запросов в WordPress

Использование nonce для защиты

Nonce — это одноразовый ключ безопасности, который предотвращает CSRF-атаки. В нашем примере мы генерируем nonce через wp_create_nonce и проверяем с помощью check_ajax_referer. Это обязательный шаг при работе с AJAX.

Минимизация нагрузки на сервер

Убедитесь, что AJAX-запросы выполняют минимально необходимую работу, не делают тяжелых запросов к базе. В нашем примере мы ограничили количество постов до 5. Если нужно часто обновлять данные, рассмотрите использование кеширования.

Обработка ошибок и информирование пользователя

Важно обрабатывать ошибки как на стороне сервера, так и в JavaScript. В примере выше мы показываем alert при ошибках, но в реальном проекте лучше использовать более удобные уведомления.

Примеры полезных плагинов для работы с AJAX в WordPress

Если не хочется писать код самостоятельно, можно использовать готовые плагины, которые расширяют возможности AJAX:

  • ABC Pagination — плагин для AJAX пагинации, который поможет сделать постраничную навигацию без перезагрузки страницы.
  • WPRemark — AJAX комментарии с расширенными возможностями, позволяющие модерировать и обновлять отзывы без перезагрузки.

Расширенные техники: использование REST API вместо admin-ajax.php

Хотя admin-ajax.php — стандартный способ работы с AJAX в WordPress, в новых разработках все чаще используют REST API. Он быстрее и удобнее для работы с современными фронтенд-фреймворками.

Можно зарегистрировать собственный REST endpoint и обращаться к нему через fetch или axios. Пример регистрации:

function wproot_register_rest_route() {
    register_rest_route('wproot/v1', '/posts', [
        'methods' => 'GET',
        'callback' => 'wproot_rest_get_posts',
        'permission_callback' => '__return_true'
    ]);
}
add_action('rest_api_init', 'wproot_register_rest_route');

function wproot_rest_get_posts() {
    $posts = get_posts(['posts_per_page' => 5]);
    $data = [];
    foreach ($posts as $post) {
        $data[] = [
            'id' => $post->ID,
            'title' => $post->post_title,
            'link' => get_permalink($post),
        ];
    }
    return rest_ensure_response($data);
}

Такой подход удобен, если вы делаете SPA (Single Page Application) на React, Vue или Angular.

Выводы и рекомендации

Использование AJAX в WordPress значительно повышает интерактивность сайта и улучшает пользовательский опыт. Главное — правильно организовать код, использовать nonce для безопасности, и следить за оптимизацией запросов.

По мере роста проекта стоит рассмотреть переход на REST API для более гибкой и современной архитектуры.

Добавь в закладки и поделись с друзьями:

⭐⭐⭐⭐⭐
Как создать свой плагин WordPress с настройками: пошаговое руководство
05.11.2025
Создать динамический список постов в WordPress с AJAX: практическое руководство
30.01.2026
Как использовать WPRemark для автоматического отзыва и управления комментариями в WordPress
09.03.2026
Как создать собственный REST API endpoint в WordPress: подробное руководство
01.12.2025
Как создать собственный виджет с поддержкой AJAX в WordPress
08.04.2026
×
WordPress
прокачай свой сайт!

-20% на премиум темы и плагины

Сделай апгрейд сайта ⋙