Динамическое обновление контента в WordPress без перезагрузки страницы

Зачем нужно динамическое обновление контента в WordPress

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

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

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

Как работает AJAX в WordPress: основные принципы

AJAX в WordPress строится на использовании специальных хуков и обработчиков запросов. Основная идея — создать JavaScript-запрос, который отправляет данные на сервер, где PHP-обработчик выполняет нужные действия и возвращает результат в формате JSON или HTML.

Для обработки AJAX запросов в WordPress существуют два специальных действия:

  • wp_ajax_{action} — для авторизованных пользователей;
  • wp_ajax_nopriv_{action} — для неавторизованных пользователей.

Где {action} — уникальное имя для вашего обработчика.

В JavaScript используется переменная ajaxurl, которая указывает на файл admin-ajax.php — точку входа для AJAX-запросов в WordPress.

Пример: динамическая загрузка списка последних записей WordPress

Допустим, нам нужно загрузить последние 5 записей без перезагрузки страницы по кнопке «Показать ещё».

Шаг 1. Добавляем JavaScript для отправки AJAX-запроса

Создайте файл wpdeveloper-ajax.js в вашей теме или плагине и добавьте туда следующий код:

jQuery(document).ready(function($) {
  var page = 1;
  $('#load-more-posts').on('click', function(e) {
    e.preventDefault();
    page++;
    $.ajax({
      url: ajaxurl,
      type: 'POST',
      data: {
        action: 'wpdeveloper_load_more',
        page: page
      },
      success: function(response) {
        if(response) {
          $('#post-list').append(response);
        } else {
          $('#load-more-posts').hide();
        }
      }
    });
  });
});

Здесь при клике на кнопку с id load-more-posts отправляется AJAX-запрос с параметром page, который увеличивается при каждом запросе.

Шаг 2. Регистрируем и подключаем скрипт в WordPress

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

function wpdeveloper_enqueue_scripts() {
  wp_enqueue_script('wpdeveloper-ajax-script', get_template_directory_uri() . '/js/wpdeveloper-ajax.js', array('jquery'), null, true);
  wp_localize_script('wpdeveloper-ajax-script', 'ajaxurl', admin_url('admin-ajax.php'));
}
add_action('wp_enqueue_scripts', 'wpdeveloper_enqueue_scripts');

Функция wp_localize_script передает переменную ajaxurl в JavaScript.

Шаг 3. Создаем обработчик AJAX-запроса в PHP

В functions.php добавьте:

function wpdeveloper_load_more_posts() {
  $paged = isset($_POST['page']) ? intval($_POST['page']) : 1;
  $args = array(
    'post_type' => 'post',
    'posts_per_page' => 5,
    'paged' => $paged
  );
  $query = new WP_Query($args);
  if($query->have_posts()) {
    while($query->have_posts()) {
      $query->the_post();
      get_template_part('template-parts/content', get_post_format());
    }
  } else {
    wp_send_json(false); // Нет постов
  }
  wp_die();
}
add_action('wp_ajax_wpdeveloper_load_more', 'wpdeveloper_load_more_posts');
add_action('wp_ajax_nopriv_wpdeveloper_load_more', 'wpdeveloper_load_more_posts');

Этот обработчик получает номер страницы из запроса, делает WP_Query и возвращает HTML для новых записей. Если записей нет — возвращает false.

Шаг 4. Добавляем разметку на страницу

В файле шаблона (например, index.php) добавьте:

<div id="post-list">
  <?php
    $args = array('posts_per_page' => 5, 'paged' => 1);
    $query = new WP_Query($args);
    if($query->have_posts()) {
      while($query->have_posts()) {
        $query->the_post();
        get_template_part('template-parts/content', get_post_format());
      }
    }
    wp_reset_postdata();
  ?>
</div>
<button id="load-more-posts">Показать ещё</button>

Улучшения и рекомендации по безопасности

Для повышения безопасности AJAX запросов рекомендуем использовать wp_create_nonce и проверять nonce в обработчике. Это защитит от CSRF-атак.

Пример добавления nonce в скрипт:

function wpdeveloper_enqueue_scripts() {
  wp_enqueue_script('wpdeveloper-ajax-script', get_template_directory_uri() . '/js/wpdeveloper-ajax.js', array('jquery'), null, true);
  wp_localize_script('wpdeveloper-ajax-script', 'wpdeveloper_ajax_params', array(
    'ajaxurl' => admin_url('admin-ajax.php'),
    'nonce' => wp_create_nonce('wpdeveloper_nonce')
  ));
}
add_action('wp_enqueue_scripts', 'wpdeveloper_enqueue_scripts');

В JS тогда нужно передавать nonce:

$.ajax({
  url: wpdeveloper_ajax_params.ajaxurl,
  type: 'POST',
  data: {
    action: 'wpdeveloper_load_more',
    page: page,
    nonce: wpdeveloper_ajax_params.nonce
  },
  ...
});

А в PHP — проверять:

function wpdeveloper_load_more_posts() {
  check_ajax_referer('wpdeveloper_nonce', 'nonce');
  // остальной код
}

Полезные плагины для реализации динамического контента в WordPress

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

  • Ajax Load More — мощный плагин для постраничной загрузки и бесконечного скролла с гибкой настройкой.
  • WP Ajax Pagination — плагин для добавления AJAX пагинации на страницы и архивы.
  • Clearfy Pro (https://wpshop.ru/clearfy-pro/?utm_source=wpdeveloper.ru&utm_medium=article&utm_campaign=kak-dobavit-dinamicheskoe-obnovlenie-kontenta-v-wordpress-bez-pereloada-stranicy) — плагин с множеством оптимизаций, включая улучшение AJAX-запросов.

Эти плагины помогут быстро и без ошибок добавить динамический контент на сайт.

Выводы и практические советы

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

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

Если вы создаете сложные интерфейсы, рассмотрите использование REST API и JavaScript-фреймворков, но для простых задач AJAX в WordPress — это надежное и легкое решение.

Как создать адаптивные блоки в WordPress Gutenberg
02.12.2025
Автоматическое удаление неиспользуемых шорткодов в WordPress
07.03.2026
Как установить Redis кэш в WordPress и настроить его правильно
03.02.2026
Как создать автоматические уведомления в WordPress по событиям с помощью WPRemark
04.03.2026
Как автоматизировать управление ролями и правами в WordPress
24.03.2026