Как отключить AJAX пагинацию в WordPress и заменить на классическую

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

Что такое AJAX пагинация и почему её иногда нужно отключать

AJAX пагинация позволяет загружать следующий контент на странице без полной перезагрузки, улучшая UX и ускоряя взаимодействие. Однако у неё есть недостатки:

  • Не всегда корректно работают SEO-просмотры, если URL не меняется.
  • Может конфликтовать с другими плагинами или кастомным JS.
  • Труднее отлаживать ошибки из-за асинхронных запросов.

Если вы столкнулись с такими проблемами, лучше отключить AJAX пагинацию.

Как определить, что в вашей теме или плагине используется AJAX пагинация

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

Проверьте следующие моменты:

  • В консоли браузера в разделе Network при клике на пагинацию виден AJAX-запрос.
  • В исходном коде темы есть файлы JS с функциями, которые перехватывают клики по ссылкам пагинации.
  • В functions.php или подключаемых плагинах используются хуки wp_ajax_ для обработки AJAX запросов.

Если уверены, что пагинация AJAX, то приступаем к отключению.

Отключение AJAX пагинации: пошаговое руководство

1. Удаление JS, отвечающего за AJAX пагинацию

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

Пример для темы (добавьте в functions.php вашей темы):

function wpsocial_dequeue_ajax_pagination() {
    wp_dequeue_script('ajax-pagination'); // замените 'ajax-pagination' на хендл вашего скрипта
}
add_action('wp_enqueue_scripts', 'wpsocial_dequeue_ajax_pagination', 20);

Если хендл скрипта неизвестен, найдите его в исходниках темы или плагина.

2. Отключение PHP обработчиков AJAX-запросов пагинации

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

function wpsocial_remove_ajax_pagination_hooks() {
    remove_action('wp_ajax_nopriv_load_posts', 'load_posts_callback');
    remove_action('wp_ajax_load_posts', 'load_posts_callback');
}
add_action('init', 'wpsocial_remove_ajax_pagination_hooks');

Замените load_posts_callback на вашу функцию, обрабатывающую AJAX.

3. Замена на классическую пагинацию WordPress

После отключения AJAX пагинации, нужно вернуть вывод классической пагинации. Самый простой способ — использовать встроенную функцию the_posts_pagination():

if (function_exists('the_posts_pagination')) {
    the_posts_pagination(array(
        'mid_size'  => 2,
        'prev_text' => __('« Назад', 'wpsocial'),
        'next_text' => __('Вперёд »', 'wpsocial'),
    ));
}

Добавьте этот код в файл вашей темы, где выводится список постов (например, archive.php или index.php), заменив AJAX пагинацию.

Дополнительные советы по улучшению классической пагинации

Чтобы классическая пагинация выглядела современно и была удобной, рекомендуем:

  • Использовать стили из вашей темы или подключить CSS для кнопок.
  • Добавить aria-label и другие атрибуты для доступности.
  • Если хотите расширить функционал, используйте плагин ABC Pagination, который позволяет гибко настраивать классическую пагинацию с поддержкой AJAX и без.

Пример кода полной замены AJAX пагинации на классическую в теме

// Отключаем скрипт AJAX пагинации
function wpsocial_dequeue_ajax_pagination() {
    wp_dequeue_script('ajax-pagination');
}
add_action('wp_enqueue_scripts', 'wpsocial_dequeue_ajax_pagination', 20);

// Удаляем AJAX обработчики
function wpsocial_remove_ajax_pagination_hooks() {
    remove_action('wp_ajax_nopriv_load_posts', 'load_posts_callback');
    remove_action('wp_ajax_load_posts', 'load_posts_callback');
}
add_action('init', 'wpsocial_remove_ajax_pagination_hooks');

// В шаблоне темы, например archive.php, заменяем пагинацию
if (have_posts()) :
    while (have_posts()) : the_post();
        // вывод поста
    endwhile;

    the_posts_pagination(array(
        'mid_size'  => 2,
        'prev_text' => __('« Назад', 'wpsocial'),
        'next_text' => __('Вперёд »', 'wpsocial'),
    ));
else :
    echo '<p>Посты не найдены.</p>';
endif;

Заключение по теме отключения AJAX пагинации

Отключение AJAX пагинации — частая задача при настройке WordPress-сайтов, особенно когда требуется улучшить SEO или устранить конфликты. Главное — внимательно найти и убрать все связанные с AJAX обработчики и скрипты, а затем заменить вывода на стандартный код. Если нужна расширенная классическая пагинация с удобной настройкой, можно использовать ABC Pagination от WPSHOP.

Как создать собственный социальный фид в WordPress с примерами кода
20.12.2025
WooCommerce: как автоматически удалять неактивные заказы по срокам
07.07.2026
Как отключить AJAX пагинацию в WordPress и заменить на классическую
06.01.2026
Автопостинг из YouTube в WordPress с фильтрацией и обработкой контента
24.03.2026
Как удалить метаданные из изображений при загрузке в WordPress
27.01.2026