Исправляем ошибку 404 при пагинации кастомных типов записей в WordPress

Диагностика ошибки 404 при пагинации кастомных типов записей

Ошибка 404 при переходе по страницам пагинации кастомных типов записей — частая проблема в WordPress. Обычно это связано с неправильной работой параметра paged в запросах WP_Query или некорректной настройкой постоянных ссылок.

Чтобы диагностировать проблему, проверьте:

  • Правильно ли передается параметр paged в запрос.
  • Обновлены ли правила перезаписи (rewrite rules) после регистрации кастомного типа записи.
  • Не конфликтуют ли другие плагины или темы с пагинацией.

Проверка текущих правил перезаписи

Для просмотра правил перезаписи можно использовать следующий код в файле functions.php или в отдельном плагине для отладки:

add_action('init', function() {
    global $wp_rewrite;
    error_log(print_r($wp_rewrite->rules, true));
});

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

Пошаговое решение проблемы

1. Правильная регистрация кастомного типа записи

При регистрации кастомного типа записи обязательно указывайте параметр 'has_archive' => true и корректный rewrite с 'with_front' => false, если требуется.

register_post_type('product', [
    'label' => 'Товары',
    'public' => true,
    'has_archive' => true,
    'rewrite' => [
        'slug' => 'products',
        'with_front' => false
    ],
    'supports' => ['title', 'editor', 'thumbnail'],
]);

2. Использование параметра paged в WP_Query

При выводе пагинации важно правильно передать текущую страницу в параметр paged. Пример правильного запроса:

$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;

$args = [
    'post_type' => 'product',
    'posts_per_page' => 10,
    'paged' => $paged,
];
$query = new WP_Query($args);

Обратите внимание, что для главной страницы пагинации иногда нужно использовать get_query_var('page'), если пагинация встроена в статическую страницу.

3. Сброс правил перезаписи

После изменения параметров регистрации кастомного типа записи или permalink-структуры необходимо сбросить правила перезаписи:

  • Перейдите в Настройки > Постоянные ссылки в админке WordPress.
  • Нажмите кнопку «Сохранить изменения» без внесения правок.

Это обновит правила и позволит WordPress корректно обрабатывать запросы пагинации.

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

  • Перейдите на страницу архива кастомного типа записи (например, /products/).
  • Проверьте, что пагинация отображается и работает, переходя по страницам.
  • Убедитесь, что URL пагинации корректный, например /products/page/2/.
  • Если возникает ошибка 404, повторите сброс правил перезаписи.

Частые ошибки и как их исправить

  • Параметр paged не передается в WP_Query: обязательно используйте get_query_var('paged') для получения текущей страницы.
  • Отсутствует 'has_archive' => true: без этого параметра архивная страница и пагинация не будут работать.
  • Неправильный rewrite slug: конфликт с другими правилами или неправильный slug приводит к 404.
  • Не сброшены правила перезаписи: после изменений всегда обновляйте их.
  • Использование query_posts вместо WP_Query или неправильный хук для кастомного запроса.

Практические советы по производительности и безопасности

  • Кэшируйте результаты запросов пагинации с помощью Transients API или внешних кешей, чтобы снизить нагрузку на базу данных.
  • Избегайте избыточных и сложных запросов с большим количеством JOIN и LIKE, оптимизируйте мета-запросы.
  • Проверяйте, чтобы пагинация не позволяла SQL-инъекции — используйте стандартные функции WordPress для параметров запроса.

Сравнение подходов к реализации пагинации кастомных типов записей

ПодходПреимуществаНедостатки
Стандартный WP_Query с pagedПростота, поддержка WordPress, SEO-дружелюбностьТребует правильной настройки rewrite и сброса правил
Пользовательская пагинация на AJAXБыстрая загрузка, плавный UXСложнее реализовать, требует дополнительного JS и кеширования
Использование плагинов (например, WP-PageNavi)Удобство, готовые стили и функцииМожет конфликтовать с кастомными запросами, лишний код

Добавь в закладки и поделись с друзьями:

⭐⭐⭐⭐⭐
Как добавить пагинацию в WordPress для комплексных запросов с помощью WP_Query
12.03.2026
Как исправить ошибку 404 при пагинации WooCommerce
20.06.2026
Как исправить неработающую пагинацию в WooCommerce при кастомных WP_Query
07.06.2026
Как добавить пагинацию в WP REST API
09.12.2025
Как добавить пагинацию в WP Admin для кастомных типов записей
28.03.2026
×
-15%
на премиум плагин
My Popup

Повысьте конверсию!

Получить скидку »