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

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

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

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

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

Подготовка: подключение скрипта AJAX в теме WordPress

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

function wpdirect_enqueue_scripts() {
    wp_enqueue_script('wpdirect-ajax-script', get_template_directory_uri() . '/js/wpdirect-ajax.js', ['jquery'], null, true);

    wp_localize_script('wpdirect-ajax-script', 'wpdirect_ajax_obj', [
        'ajax_url' => admin_url('admin-ajax.php'),
        'nonce'    => wp_create_nonce('wpdirect_ajax_nonce')
    ]);
}
add_action('wp_enqueue_scripts', 'wpdirect_enqueue_scripts');

Здесь мы подключаем файл wpdirect-ajax.js, в котором будет описана логика AJAX, и передаём в него объект wpdirect_ajax_obj с URL для запросов и nonce — защитным кодом для безопасности.

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

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

jQuery(document).ready(function($) {
    $('#wpdirect-ajax-button').on('click', function(e) {
        e.preventDefault();

        $.ajax({
            url: wpdirect_ajax_obj.ajax_url,
            type: 'POST',
            data: {
                action: 'wpdirect_get_random_post',
                nonce: wpdirect_ajax_obj.nonce
            },
            success: function(response) {
                if(response.success) {
                    $('#wpdirect-ajax-result').html(response.data);
                } else {
                    $('#wpdirect-ajax-result').html('Ошибка получения данных');
                }
            },
            error: function() {
                $('#wpdirect-ajax-result').html('Ошибка запроса');
            }
        });
    });
});

В этом примере мы реагируем на нажатие кнопки с ID wpdirect-ajax-button, отсылаем POST-запрос с параметром action, по которому WordPress определит, какую функцию нужно вызвать.

Создание PHP обработчика AJAX-запроса в WordPress

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

function wpdirect_ajax_get_random_post() {
    check_ajax_referer('wpdirect_ajax_nonce', 'nonce');

    $args = [
        'post_type' => 'post',
        'orderby'   => 'rand',
        'posts_per_page' => 1
    ];

    $query = new WP_Query($args);

    if($query->have_posts()) {
        $query->the_post();
        $response = '<h3>' . get_the_title() . '</h3>';
        $response .= '<p>' . get_the_excerpt() . '</p>';
        wp_reset_postdata();

        wp_send_json_success($response);
    } else {
        wp_send_json_error('Посты не найдены');
    }
}
add_action('wp_ajax_wpdirect_get_random_post', 'wpdirect_ajax_get_random_post');
add_action('wp_ajax_nopriv_wpdirect_get_random_post', 'wpdirect_ajax_get_random_post');

Обратите внимание, что мы регистрируем функцию для двух хуков: wp_ajax_... — для авторизованных пользователей, и wp_ajax_nopriv_... — для гостей.

Добавление кнопки и контейнера на страницу

Чтобы протестировать AJAX, нужно добавить кнопку и блок для вывода результата. Можно добавить в любой шаблон или создать шорткод:

function wpdirect_ajax_button_shortcode() {
    return '<button id="wpdirect-ajax-button">Получить случайный пост</button><div id="wpdirect-ajax-result" style="margin-top:20px;"></div>';
}
add_shortcode('wpdirect_ajax_button', 'wpdirect_ajax_button_shortcode');

Теперь, вставив в редактор WordPress шорткод [wpdirect_ajax_button], вы получите кнопку, которая при нажатии будет загружать случайный пост без перезагрузки страницы.

Советы по безопасности и оптимизации AJAX в WordPress

Использование nonce обязательно для защиты от CSRF-атак. Также стоит учитывать нагрузку на сервер — не делайте слишком частые запросы и кешируйте данные, если это возможно.

Для сложных проектов рекомендуется разделять JavaScript-код на модули и использовать современные сборщики вроде Webpack, но для простых задач этот подход отлично работает.

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

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

Экспериментируйте с AJAX и улучшайте интерфейс ваших сайтов на WordPress, используя собственный код и возможности платформы.

WooCommerce: автоматическое изменение статуса заказа при неудачной оплате
12.06.2026
Как установить автоматический ответ на отзывы в WordPress
22.01.2026
Оптимизация базы данных WordPress: практические советы и методы
01.12.2025
Как создать динамический PDF-файл в WordPress с помощью PHP
05.01.2026
Как автоматически менять статус заказа WooCommerce по условиям: решение проблемы с неработающим обновлением
29.04.2026