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

Итак, суть проблемы — при переходе на 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');

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

Как заменить пагинацию WooCommerce на WP-PageNavi

Простой способ подключить вместо стандартной пагинации WooCommerce woocommerce_pagination пагинацию с помощью плагина WP-PageNavi. Устанавливаем и…

Ajax Load More

Repeater Templates index.php home.php

Не спешите обновлять CMS WordPress до версии 5.7 — обнаружен конфликт с Contact Form 7 версии 5.4

Итак, суть проблемы — на некоторых сайтах перестала работать форма обратной связи Contact Form 7…

Как сделать бекап и импортировать базу через SSH

Столкнулся с такой задачей, что нужно было импортировать базу через консоль по SSH, хотя обычно…

3 комментария

Дай тебе Бог здоровья!

Павел

и долгих лет жизни!!!

Санек

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

Ответить