Убираем стандартную пагинацию на необходимых страницах wordpress

13 апреля, 2020 17:25
Admin
19 июня, 2022 8:41

По умолчанию в wordpress для создания постраничной навигации используются ссылки вида /page/1/, /page/2/ и так далее. К сожалению, данные ссылки обрабатываются движком wordpress по всему сайту, а не только на страницах, на которых указаны ссылки пагинации. Это означает, что на страницах, где данная пагинация не используется эти ссылки также будут открываться.

Предположим, что на главной странице сайта вы выводите последние записи. Далее в настройках чтения (Настройки > Чтение) у вас указано отображать не более 10 записей. В один прекрасный момент ваших записей становится больше 10. тогда вы добавляете ссылки постраничной навигации на нужных вам страницах. Но оказывается, что на главной странице, где вы не добавляли пагинацию, ссылки вида /page/2/ тоже открываются.

С точки зрения СЕО, такие страницы можно легко закрыть в robots.txt или добавить тег "canonical". Но в данной статье я бы хотел рассказать несколько способов, которые позволят полностью избавиться от таких ссылок на тех страницах, где они не нужны.

Добавляем редирект в .htaccess

С помощью файла .htaccess можно настроить нужные редиректы следующим образом:

Redirect 301 /page/2/ http://yoursite.com
Redirect 301 /page/3/ http://yoursite.com

Недостатки такого подхода заключаются в том, что редирект придется прописывать для всех страниц постраничной навигации, что очень не удобно на мой взгляд.

Чтобы сделать редирект со всех страниц вида /page/*/, на главную страницу можно добавить следующее правило в файл .htaccess:

RedirectMatch 301 /(.*)/page(.*) /$1
RedirectMatch 301 /page(.*) http://yoursite.com/

Важно: если на вашем сайте есть страницы вида /page/*/, которые необходимо оставить, не используйте данное правило.

Добавляем редирект в файл functions.php

С помощью файла темы functions.php мы очень гибко можем перенаправлять пользователя на нужную нам страницу.

Убираем пагинацию на главной странице

Чтобы убрать ссылки пагинации на главной странице, можно сделать редирект в файле functions.php:

<?php
function custom_redirect_pagination() {
   if(is_home() && is_paged()) {
      wp_redirect(home_url(), 301);
   }
}

add_action('template_redirect', 'custom_redirect_pagination');

Теперь, если мы попытаемся перейти по ссылке /page/2/, то нас должно перенаправить на главную страницу.

Добавляем редирект на других страницах

По аналогии с главной страницей мы можем сделать редирект похожим образом. Например: делаем редирект на страницах, где существуют ссылки пагинации и страница не является категорией:

<?php
function custom_redirect_pagination_page() {
   if(is_paged() && !is_category()) {
      wp_redirect(get_permalink(), 301);
   }
}

add_action('template_redirect', 'custom_redirect_pagination_page');

Теперь, при переходе на страницы типа /company/page/2/, будет выполнен редирект на страницу /company/.

Данный способ более гибкий по сравнению с использованием файла .htaccess, поскольку позволяет использовать большой набор функций worpress.