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

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

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

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

  • Загрузки новых записей или товаров на страницу;
  • Отправки форм без обновления;
  • Обновления отдельных элементов интерфейса;
  • Реализации живого поиска;
  • И многих других интерактивных задач.

Использование AJAX улучшает UX, снижая время ожидания и делая сайт более отзывчивым.

Подключение AJAX в WordPress: основные шаги

Для работы с AJAX в WordPress нужно настроить две части: клиентскую (JavaScript) и серверную (PHP). Рассмотрим их по отдельности.

Клиентская часть: JavaScript и jQuery

WordPress по умолчанию загружает библиотеку jQuery, которую удобно использовать для AJAX запросов. Для начала создадим скрипт, который отправляет запрос:

jQuery(document).ready(function($) {
    $('#wpeducation-ajax-button').on('click', function() {
        var data = {
            action: 'wpeducation_load_content', // Имя действия
            nonce: wpeducation_ajax.nonce // Безопасность
        };

        $.post(wpeducation_ajax.ajax_url, data, function(response) {
            $('#wpeducation-ajax-result').html(response);
        });
    });
});

Обратите внимание на объект wpeducation_ajax. Его мы передадим из PHP с помощью wp_localize_script, чтобы JS знал URL для AJAX запросов и nonce для безопасности.

Серверная часть: обработка AJAX в functions.php

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

function wpeducation_ajax_load_content() {
    check_ajax_referer('wpeducation_nonce', 'nonce');

    // Здесь можно получить данные из $_POST или $_GET, выполнить запросы к базе, сформировать ответ
    $new_content = 'Это контент, загруженный через AJAX. Время: ' . current_time('H:i:s');

    echo $new_content;
    wp_die(); // Завершаем ajax-запрос
}

add_action('wp_ajax_wpeducation_load_content', 'wpeducation_ajax_load_content');
add_action('wp_ajax_nopriv_wpeducation_load_content', 'wpeducation_ajax_load_content');

function wpeducation_enqueue_scripts() {
    wp_enqueue_script('wpeducation-ajax-script', get_template_directory_uri() . '/js/wpeducation-ajax.js', array('jquery'), null, true);
    wp_localize_script('wpeducation-ajax-script', 'wpeducation_ajax', array(
        'ajax_url' => admin_url('admin-ajax.php'),
        'nonce'    => wp_create_nonce('wpeducation_nonce')
    ));
}
add_action('wp_enqueue_scripts', 'wpeducation_enqueue_scripts');

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

Также подключаем скрипт и локализуем параметры, чтобы JS мог корректно отправлять запросы.

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

Рассмотрим более практичный пример — загрузка дополнительных постов при нажатии кнопки «Показать ещё».

JavaScript для загрузки постов

jQuery(document).ready(function($) {
    var page = 1;
    $('#load-more-posts').on('click', function() {
        page++;
        var data = {
            action: 'wpeducation_load_more_posts',
            nonce: wpeducation_ajax.nonce,
            page: page
        };

        $.post(wpeducation_ajax.ajax_url, data, function(response) {
            if(response) {
                $('#post-list').append(response);
            } else {
                $('#load-more-posts').hide();
            }
        });
    });
});

PHP обработчик для подгрузки постов

function wpeducation_ajax_load_more_posts() {
    check_ajax_referer('wpeducation_nonce', 'nonce');
    $paged = isset($_POST['page']) ? intval($_POST['page']) : 1;

    $query = new WP_Query(array(
        'post_type' => 'post',
        'paged' => $paged,
        'posts_per_page' => 3
    ));

    if($query->have_posts()) {
        while($query->have_posts()) {
            $query->the_post();
            // Выводим посты в нужном формате
            echo '<div class="post-item">';
            echo '<h2><a href="' . get_permalink() . '">' . get_the_title() . '</a></h2>';
            echo '<div class="excerpt">' . get_the_excerpt() . '</div>';
            echo '</div>';
        }
    } else {
        echo '';
    }
    wp_reset_postdata();
    wp_die();
}
add_action('wp_ajax_wpeducation_load_more_posts', 'wpeducation_ajax_load_more_posts');
add_action('wp_ajax_nopriv_wpeducation_load_more_posts', 'wpeducation_ajax_load_more_posts');

Этот код позволяет подгружать по 3 поста при каждом нажатии на кнопку. Если посты заканчиваются, кнопка скрывается.

Использование плагинов для упрощения работы с AJAX

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

  • Clearfy Pro — оптимизирует работу сайта и содержит инструменты для работы с AJAX;
  • WPRemark — позволяет использовать AJAX для обновления оценок и отзывов без перезагрузки;
  • Quizle — интерактивные викторины с AJAX-загрузкой вопросов.

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

Безопасность и лучшие практики при работе с AJAX в WordPress

При разработке на AJAX важно соблюдать безопасность:

  • Используйте wp_create_nonce и check_ajax_referer для защиты от CSRF атак.
  • Проверяйте и фильтруйте входящие данные.
  • Не выводите данные без обработки и экранирования.
  • Используйте правильные хуки wp_ajax_ и wp_ajax_nopriv_ для поддержки авторизованных и неавторизованных пользователей.

Также следите за производительностью, чтобы AJAX запросы не перегружали сервер.

Выводы

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

WooCommerce: как автоматически удалять старые неоплаченные заказы по срокам
09.07.2026
WooCommerce: автоматическое удаление старого неоплаченного заказа с подробной настройкой
01.07.2026
Как отключить Gutenberg в WordPress 2024: практические способы и примеры кода
09.12.2025
WooCommerce: автоматическое удаление старых неоплаченных заказов
11.06.2026
Создать и использовать собственные шорткоды в WordPress
31.10.2025