Нынче коротенький пост в продолжение темы доработка сайта, либо подстройка текущих настроек сайта. Тема касается так называемого SEO, а это важнейший пункт в организации успешной работы нашего предприятия.
Дело в том, что ко мне время от времени обращаются владельцы сайтов с просьбами закрыть страницы архивов от индексации тегами noindex,follow (исправить ошибки). В общем-то, эта задача достаточно проста, однако, коли есть вопрос, его нужно решать!
Закроем страницу архива в noindex,follow
(либо noindex,nofollow
, в зависимости от требований). Без плагинов. Хотя, многие воскликнут – зачем? с этим же замечательно справляются большинство плагинов! а я отвечу: не всегда целесообразно прибегать к использованию плагинов.
Обратимся к условным тегам Вордпресс (к тому же, теги возможно создавать свои).
Но обо всём по порядку…
- Как закрыть страницы пагинации архивов в noindex,follow
- добавим тег noindex,follow абсолютно ко всем страницам пагинации
- как убрать лишний тег noindex,follow на кастомной странице пагинации
- сопутствующие условные теги по теме страниц пагинации
- проверка на какой конкретно странице пагинации мы находимся
- пример использования is_page_template()
…лирическое вступление:
Предположим, мы создали некую страницу и хотим вывести на этой странице выборку каких-то требуемых постов сайта – ленту…
т.е. собрать в один архив интересные посты какой-то категории, либо метки, автора, или произвольного типа, либо же отовсюду по чуть-чуть… Всё замечательно! однако, чтобы исключить дублирование контента, эту ленту (архив) нужно каким-то образом закрыть, либо открыть индексацию… т.е добавить в код метатеги noindex,follow таким образом сообщить роботу возможные разрешения…
Подобные работы я привык называть техническое SEO, потому как они непосредственно организует условия индексации страниц веб площадки.
Как выясняется из вопросов администраторов сайтов, у большинства из них возникают некоторые затруднения, когда те пытаются добавить самостоятельно нужные метатеги robots для страниц, скажем так, пагинации, имеющих ссылки по типу /page/2, /page/3 и т.д.
Отыскивают в сети некий код… дописывают его в файл функций и – не тут-то было! При тестировании возникает ошибка… (хотя, это не ошибка, а так – недоработка… Да и ПС на это сильно ругаться не станет) однако…
Например, частая закавыка выясняется в показаниях RDS бара (картинка ниже) как видим, наличие двух аналогичных тегов. Один из которых неплохо бы убрать.
…чтобы получилось так, как на фото ниже:
К слову: в ситуации, когда RDS бар покажет два метатега noindex,follow и noindex,nofollow – ПС-робот как правило выбирает наименее строгий мета! то есть в данном случае noindex,follow
.
noindex,follow – страница разрешена к проходу робота, НО не индексации контента
noindex,nofollow – роботам запрещён проход и индексация…
Как закрыть страницы пагинации архивов в noindex,follow
All in One SEO как закрыть страницу пагинации в noindex
Исходя из ситуации описанной выше, правильный теоретический подход по скрытию страниц пагинации в noindex,follow
будет следующий.
У нас есть страница сайта, на которой выводится некий архив. (как создаются страницы, об этом поговорим во всех подробностях в следующей статье, или разберемся в видеоуроке).
Предположим, страница ленты с архивом имеет ID 4.
Если нам требуется вывести информацию (в данном случае атрибутику noindex,follow
) только на этой странице, воспользуемся следующим тегом:
if ( is_page( '4' ) )
– наряду с ID страницы может быть указан слаг: слагаемый фрагмент ссылки, например popular
Полный код будет выглядеть так:
/*комментарий*/
add_action('wp_head', 'mihalica_metapage_robots');
function mihalica_metapage_robots() {
if (is_page( '4 ') ) // 4 ID страницы, либо возможно использовать ссылку страницы типа: popular
{
echo "".'<meta name="robots" content="noindex,follow" />'."\n"; } }
/*закрываем стр. к ИНДЕКСУ*/
После прописки этого кода в файле функций (или там, где вы прописываете код), на главной странице архива (НЕ включая стр. пагинации) тег для роботов будет выведен.
Функция кода активируется в шапке сайта wp_head
при помощи строки экшн add_action
:
add_action('wp_head', 'mihalica_metapage_robots');
functions.php — как разбить на отдельные функциональные части.
важная справка: если вы используете для закрытия страниц метатеги robots noindex,follow
– в этом случае эти страницы ДОЛЖНЫ быть открытыми в файле robots.txt. Помните об этом!
добавим тег noindex,follow абсолютно ко всем страницам пагинации
Чтобы понимать, как по теме статьи отрабатывают условные теги Вордпресс, думаю, будет не лишним забежать вперед и рассмотреть примеры по составным частям:
подборка основных условных тегов WP расписана здесь.
как найти и убрать циклические ссылки… работа с условными тегами.
Для того, чтобы добавить информацию на страницы пагинации (важно ! на все страницы сайта, на которых отрабатывает пагинация) существует такой условный тег:
is_paged(' ')
Очень возможно, что этот тег у вас на сайте на ряду с иными уже используется! (или в плагином или сами ручками прописывали) по типу:
if (is_category( ' ' ) or is_tag( ' ' ) or is_paged( ' ' ) or is_search( ' ' ) or is_author( ' ' ))
В этом случае, на всех страницах пагинации соответственно с условиями выше метатег роботс уже будет выведен.
Замечательно! …однако, в нашем случае, все эти благостные решения с использованием условных тегов, хороши для архивов по умолчанию (рубрик, меток и т.д.).
Мы же, создали свой собственный архив, используя страницу с ID 4, а значит потребуются и настройки более утончённые.
Что ж, давайте попробуем наш архив пролистать по страницам!
…как и говорилось выше, на страницах пагинации появится ошибка, как на скриншоте выше! Лишний тег! …потому что информация robots в соответствии с условным тегом if (is_page( '4 ') )
и у кого уже используется if ( ! is_paged(' ') )
будет выведена на всех сопутствующих страницах!
как убрать лишний тег noindex,follow на кастомной странице пагинации
Поможет всё тот же условный тег if ( is_paged(' ') )
немного подредактированный: припишем значок ! что обусловит инвертирование – обратное действие:
if ( ! is_paged(' ') ) //информация будет выведена НЕ на страницах пагинации
Немного модернизируем – переработаем самый первый по статье код – добавим к нему всего одну строку:
if (is_page('4'))
if ( ! is_paged()) // добавим этот условный тег, который в нашем случае запретит вывод тега robots на странице с ID 4
Теперь, если попробовать архив пролистать по страницам – никакого лишнего тега не обнаружится..! Что нам и требовалось…
Это действие назовём – локальные правки по конкретной странице архивов.
То есть наши правки отменят на конкретной странице архива (с id 4) результат условного глобального действия is_paged())
– для всех архивов сайта.
Полный код должен выглядеть так:
/*закрываем стр. пагинации к ИНДЕКСУ noindex,follow"*/
add_action('wp_head', 'mihalica_metapage_robots');
function mihalica_metapage_robots() {
if (is_page('4')) // 4 ID страницы, либо возможно использовать ссылку страницы типа: popular
if (!is_paged()) // исключаем на страницах пагинации лишний мета
{
echo "".'<meta name="robots" content="noindex,follow" />'."\n"; } }
/*закрываем стр. к ИНДЕКСУ*/
Важно!
Это я показал решение для конкретной страницы с id 4.
Однако, если у вас уже используется условие is_paged()
в каком-то общем варианте кода, как упомянуто выше по тексту, тогда нужно сделать так, как показано ниже:
if (is_category( ' ' ) or is_tag( ' ' ) or is_paged( ' ' ) or is_search( ' ' ))
if ( ! is_page('4')) // добавляете к основному коду это условие - со знаком инвертирования !
То есть значок “!” обусловит запрет вывода метатега на кастомной странице.
Существует несколько способов, указать кастомные страницы, один из вариантов описан ниже.
Если запутались, то непременно посмотрите видео!! в нём всё подробно рассказано и показано…
Небольшое отступление…
…для тех читателей, которые смотрели видео – вот итоговый пример кода, который работали в кино…
/*открываем к проходу рубрики и т.п. архивы - но НЕ ИНДЕКСАЦИИ роботами*/
add_action('wp_head', 'al_meta_lenty_robots');
function al_meta_lenty_robots() {
if (is_category() or is_paged() or is_search() or is_tag() or is_tax() )
if ( ! is_page( '23934' ) ) // запрет вывода мета на такой-то id странице
{
echo "\n".'<meta name="robots" content="noindex,follow" />'."\n";
}
if ( is_page( '23934' ) ) // вывод на такой-то id страние
echo "\n".'<meta name="robots" content="noindex,nofollow" />'."\n";
}
/*открываем к проходу рубрики и т.п. архивы - но НЕ ИНДЕКСАЦИИ роботами*/
…это примерная заготовка условностей в коде, – всё это нужно править под себя.
Если что не ясно, пишите…
сопутствующие условные теги по теме страниц пагинации
К слову повествования пример проверки страницы произвольных типов:
/*для произвольного ТИПА*/
add_action('wp_head', 'mihalica_meta_type_robots');
function mihalica_meta_type_robots() {
if (is_post_type_archive( 'name' ) ) // имя произвольного типа
{
echo "".'<meta name="robots" content="noindex,follow" />'."\n";
} }
/*для произвольного ТИПА*/
проверка на какой конкретно странице пагинации мы находимся
Бывают случаи, когда нужно проверить конкретную страницу пагинации – в этом случае используем get_query_var('paged')
if ( get_query_var( 'paged' ) == 4 ) {
// отработает на 4-й странице пагинации и т.д.
}
пример использования is_page_template()
is_page_template()
– определит, используется ли указанный файл шаблона при генерации текущей страницы:
is_page_template( $template = '' )
Что примечательно, функция возвратит true
в том случае, если указанный в параметре файл шаблона используется в генерации текущей страницы, в иных случаях отдаст false
.
$template - значение: путь к файлу
В подобной конструкции возможно указать полное имя файла шаблона, например page-wordpress.php
при этом, стартуя от версии WordPress 3.4, появилась возможность (без всяких костылей) указать путь (папку), в которой находится файл для кастомной страницы.
пример:
name/page-wordpress.php
…более примерно условие составляется так:
if (is_page_template('name/page-wordpress.php'))
{
// если файл используется выводится этот код
} else {
// если файл НЕ используется - этот код
}
…подборка основных условных тегов WP расписана здесь
Все подобные конструкции условных тегов возможно компоновать как угодно-с!
…не убоюсь такого громкого сравнения как – возможности ограничены только рамками наших фантазий!
Я дал решения разрозненно, однако, весь требуемый код возможно соединить в один, который и будет направлен на обработку условий вывода информации для всего сайта – в данном случае вывода метатегов robots.
Легко, просто и удобно! – без всяких громоздких плагинов…
Я вовсе не отношусь к плагинам как-то отрицательно (к хорошим плагинам!), однако предпочитаю подход к решению вопросов в рациональном ключе. Априори))
На этом повествование заканчиваю…
В видеоуроке возможно рассмотрим примеры создания собственных условных тегов, на основе каких-то данных (например, произвольных полей и пр.). Попросту говоря – информация будет выведена, если страница соответствует заданным требованиям.
Условные теги: страницы пагинации – закрываем в noindex,follow
mihalica.ru !
Здравствуйте, Михаил!
Спасибо! по полочкам разложили. На первый взгляд, вроде довольно не сложная тема (условные теги) однако, в некоторых ситуациях – путаешься, теряешь время…
Много раз убеждаюсь, что подучится нужно только у того, который знает больше “тебя” по факту, а не болтовне..
Поэтому спасибо за труд!
PS
у вас в один из примеров вкрался ошибочный ID: 23934
Спасибо, Сергей. Поправил.
Добрый день. Хочу закрыть страницы пагинации. в фукцию темы вставил вот такой код
;
при просмотре кода страницы пагинации действительно появляется:
но изначально по умолчанию на той же страницы пагинации присутствует
поддержка яндекс говорит что робот видет его как приоритетный и ваш код не учитывает. подскажите что сделать и как решить этот вопрос
День добрый!
Что-то не понятно! Вы как-то сумбурно изложили.
Код вроде не полный у вас (или не весь сюда записали) – есть же над формой комментирования кнопки для обработки кода!
Спасибо за работу…
Статья и видюха пригодились очень)
Добрый день. Хочу закрыть страницы пагинации. в фукцию темы вставил вот такой код
При просмотре кода страницы пагинации действительно видно тег
Но на той же странице пагинации по умолчанию есть вот такой тег
Поддержка Яндек говорит что робот видет второй тег и считает его главным. А мой (первый тег) не берет во внимание. что сделать?
Решение вашей задачи достаточно простое:
Нужно убрать второй тег.
Разберитесь что генерирует этот роботс
index, follow
тег.index, follow
– конечно будет в приоритете – его нужно убрать (или изменить)!Это ясно но как это реализовать в вердпресс? Стоит плагин yost он генерирует второй тег.
Отключите генерирование “роботс” для страниц пагинации.
(либо – код, деактивирующий этот тег в формировании исходного кода страницы)
Здравствуйте Михаил, вопрос по поводу добавления meta теша noindex, nofollow.
Как мне добавить данный мета тег на сраницу постов отсортированный по году/месяцу (т.е пример – url заканчивается на /09/2020).
Нужно обратиться к кастомному посту is_post_type_archive( $post_types ), а потом как указать что это страница выведеных постов по году/месяцу?
Заранее благодарен за ответ.
Привет, Валерий!
Я понял ваш вопрос. К тому же ко мне обращались с подобно задачей не так дано.
Если коротко, то нужно работать с временными условиями.
А если хотите более подробно, то придется подождать… так как сейчас очень ограничен по времени: много переписки с Яндексом и тех поддержкой хостингов…
Через день-два смогу уделить время.
Буду благодарен.!
Хорошо!..
Вы мне на почту пришлите поподробнее (с примером) что и как хотите реализовать. А я по мере свободного времени посмотрю…