Метка: 404

Баг с пагинацией главной страницы в WordPress

Нашли в системе WordPress такой баг, что если у вас главная страница указана шаблоном страницы или кастомная (хотя на многих других сайтах проверяли — и во всех случаях эта ошибка встречалась), то введя в строку поиска /page/2 (вместо 2 — можете ввести любое число) — то вы увидите, что откроется главная страница. Хотя должна открываться 404-я страница.

Мы решили для своего проекта эту проблему таким образом:

add_action('template_redirect', 'is_home_page', 10);
function is_home_page(){
    if(get_page_template_slug()==='page-home.php' && !empty(get_query_var('paged')))
    {
        global $wp_query;
        $wp_query->set_404();
        status_header( 404 );
        get_template_part( 404 );
        exit();
    }
}

Мы использовали конструкцию get_page_template_slug()===’page-home.php’, потому как у нас очень кастомная верстка.

В обычном случае же, думаю, достаточно будет проверки is_home() / is_front_page().

Соответственно, что происходит?

Мы добавили экшн, который проверяет есть ли у вас переменная paged и какое у нас название шаблона страницы. Если мы понимаем, что это главная страница, то показываем страницу 404 и пишем, что такой страницы не существует.

Все просто)

Надеюсь, что кому-то пригодится это решение так же, как оно пригодилось и нам!