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

|

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

Основы работы с AJAX в WordPress: что важно знать

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

Чтобы реализовать AJAX-запрос, необходимо:

Разберём каждый шаг подробно с примерами.

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

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

1. Создание обработчика на PHP

В файле вашего плагина или темы добавьте следующий код:

function wpzoom_get_random_quote() {
    // Проверяем nonce для безопасности
    check_ajax_referer('wpzoom_ajax_nonce', 'nonce');

    // Пример выборки из базы данных
    global $wpdb;
    $table_name = $wpdb->prefix . 'quotes';
    $quote = $wpdb->get_var("SELECT text FROM $table_name ORDER BY RAND() LIMIT 1");

    if ($quote) {
        wp_send_json_success(['quote' => $quote]);
    } else {
        wp_send_json_error('Цитаты не найдены');
    }

    wp_die();
}
add_action('wp_ajax_wpzoom_get_random_quote', 'wpzoom_get_random_quote');
add_action('wp_ajax_nopriv_wpzoom_get_random_quote', 'wpzoom_get_random_quote');

Здесь мы создаём функцию wpzoom_get_random_quote, которая выбирает случайную цитату из таблицы wp_quotes и возвращает её в формате JSON. Хуки wp_ajax_ и wp_ajax_nopriv_ обеспечивают обработку для авторизованных и неавторизованных пользователей.

2. Локализация и подключение скрипта с AJAX в JavaScript

Для удобной передачи URL и nonce используем wp_localize_script. В functions.php или плагине добавьте:

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

    wp_localize_script('wpzoom-ajax-script', 'wpzoom_ajax_obj', [
        'ajax_url' => admin_url('admin-ajax.php'),
        'nonce' => wp_create_nonce('wpzoom_ajax_nonce'),
    ]);
}
add_action('wp_enqueue_scripts', 'wpzoom_enqueue_scripts');

Теперь в файле wpzoom-ajax.js можно использовать объект wpzoom_ajax_obj для отправки запросов.

3. JavaScript: отправка AJAX-запроса и обновление страницы

jQuery(document).ready(function($) {
    $('#wpzoom-load-quote').on('click', function(e) {
        e.preventDefault();

        $.ajax({
            url: wpzoom_ajax_obj.ajax_url,
            type: 'POST',
            dataType: 'json',
            data: {
                action: 'wpzoom_get_random_quote',
                nonce: wpzoom_ajax_obj.nonce
            },
            success: function(response) {
                if (response.success) {
                    $('#wpzoom-quote-container').text(response.data.quote);
                } else {
                    alert('Ошибка: ' + response.data);
                }
            },
            error: function(xhr, status, error) {
                alert('AJAX ошибка: ' + error);
            }
        });
    });
});

Этот скрипт слушает клик по кнопке с id wpzoom-load-quote, отправляет AJAX-запрос и при успешном ответе обновляет содержимое блока wpzoom-quote-container.

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

При работе с AJAX важно учитывать безопасность и производительность:

Также стоит помнить, что все AJAX-запросы проходят через admin-ajax.php, что может создавать дополнительную нагрузку на сервер. В последних версиях WordPress для REST API появилась поддержка асинхронных запросов, и для сложных задач стоит рассматривать и этот вариант.

Примеры полезных кейсов использования AJAX в WordPress

Фильтрация записей без перезагрузки

Например, на странице каталога товаров можно реализовать динамическую фильтрацию по категориям, ценам или характеристикам с помощью AJAX-запросов.

Это повысит скорость работы и удобство пользователя, так как не придётся постоянно перезагружать страницу.

Отправка форм с обратной связью

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

Подгрузка комментариев или постов

Если у вас большой блог, AJAX позволяет подгружать комментарии по мере прокрутки или загружать новые посты кнопкой «Показать ещё», что улучшает UX и снижает нагрузку на сервер.

Итог: как внедрить AJAX в свой проект на WordPress

Подводя итог, можно выделить ключевые шаги для успешной интеграции AJAX:

  1. Создайте на PHP серверный обработчик с использованием правильных хуков.
  2. Подключите и локализуйте JavaScript, чтобы передавать параметры.
  3. Напишите JS-код, который отправляет запрос и обновляет DOM.
  4. Обеспечьте безопасность с помощью nonce и проверок.
  5. Тестируйте на разных устройствах и браузерах.

Используя описанный подход, вы сможете создавать удобные, быстрые и интерактивные сайты на WordPress, отвечающие современным требованиям.

Автоматическое удаление старых файлов из медиа библиотеки WordPress
10.02.2026
Как автоматизировать удаление старых черновиков в WordPress без плагинов
20.02.2026
Как создать фильтр по авторам в WordPress с поддержкой AJAX
31.03.2026
Как создать автоматическое отключение подписок в WordPress по условиям
28.01.2026
Как настроить автоматические отчёты о просмотрах в WordPress с примерами кода
08.04.2026
×
WPShop
партнерка без «но»!

До 3225₽ за каждую продажу

Подключиться к игре