Как исправить ошибку 404 при постраничной навигации, если используются кастомные ссылки для записей и категорий в CMS WordPress

19.08.2021

Итак, суть проблемы – при переходе на 2-3 и так далее страницы блога возникает 404 ошибка, если в пермалинках у нас установлены нестандартные ЧПУ.

Для начала на странице Permalink Settings просто нажмите Save Changes, это вызовет обновление файла .htaccess и обновление пермалинок на сайте, например, эту операцию нужно произвести после добавления кастомных типов записей, чтобы обновили (добавились) урлы для новых типов записей. Иногда эта операция помогает с 404 ошибками и сайт начинает работать как надо. Если 404 ошибка при пагинации осталась, двигаемся дальше.

Допустим, в Permalink Settings у нас стоят такие параметры

Custom Structure

/blog/%category%/%postname%/

А в Category base

blog/.

В таком случае при переходе на страницу https://site.com/blog/nature/page/2/ получим 404 ошибку, что для меня было неожиданностью. Лечится данный баг добавлением в файл функций нижепредставленного кода

function wphelp_custom_pre_get_posts($query)
{
    if ($query->is_main_query() && !$query->is_feed() && !is_admin() && is_category()) {
        $query->set('paged', str_replace('/', '', get_query_var('page')));
    }
}

add_action('pre_get_posts', 'wphelp_custom_pre_get_posts');

function wphelp_custom_request($query_string)
{
    if (isset($query_string['page'])) {
        if ('' != $query_string['page']) {
            if (isset($query_string['name'])) {
                unset($query_string['name']);
            }
        }
    }
    return $query_string;
}

add_filter('request', 'wphelp_custom_request');

После этого, пагинация по сайту работает без проблем.

Рекомендую к прочтению:

Оставить комментарий