Yoast SEO. Как закрыть страницы пагинации и добавить ключевые слова

В плагине Yoast с версии 6.3 теперь нет вкладки Другое, а значит нет возможности закрыть страницы пагинации и нет возможности добавлять ключевые слова. У многих с этим возникли проблемы, хотя не понимаю зачем вообще такой функционал нужен. Поисковики и без него прекрасно все индексируют и никаких дублей нет. По крайней мере, по моим наблюдениям…

Но если надо то можно вывернуться так.

Внимание!
Весь код необходимо добавлять в файл functions.php через дочернюю тему или например пустой плагин. Прежде чем, вносить какие либо изменения, сделайте бекап сайта.
к содержанию

Как закрыть от индексации страницы пагинации?

Тут все просто, проверяем что это страница пагинации и подсовываем ей метатег robots

/*
 * Закрытие страниц пагинации от индексирования
 */
add_action( 'wp_head', 'art_noindex_paged', 2 );
function art_noindex_paged() {
   if (is_paged()){
      ?>
      <meta name="robots" content="noindex,nofollow">
      <?php
   }
}

Вот и все. До кучи, можно еще выключить канонические ссылки и теги rel="prev" и rel="next", чтобы поисковые системы не вводить в заблуждение.

/**
 * Закрытие страниц пагинации от индексирования
 */
add_action( 'wpseo_head', 'art_noindex_paged', 0 );
function art_noindex_paged() {
   
   if (is_paged()){
      add_filter( 'wpseo_canonical', '__return_false' ); // отключаем канонические ссылки
      add_filter( 'wpseo_disable_adjacent_rel_links', '__return_true' );// отключаем теги prev|next
      ?>
      <meta name="robots" content="noindex,nofollow">
      <?php
   }
}
к содержанию

Надо ли закрывать от индексации страницы пагинации?

Вопрос на миллион! Точно никто не говорит, сколько людей столько и мнений. Но есть докуметация поисковиков.

Гугл

Гугл — молоток, все прекрасно понимает. Умеет определять теги rel="prev" и rel="next", что как раз и позволяет не закрывать от индексации страницы пагинации.

В статье про обновление Yoast 6.3 есть ссылки на источники почитайте, многое станет понятнее

Яндекс

Тук как обычно, точно ничего не говорят. Вроде и rel="canonical" понимают, но только как рекомендации. Погуглил немного. Есть два подхода

  1. Закрывать страницы пагинации — однозначно и обязательно
  2. Закрывать не надо. Но требуется:
    • чтобы в теге rel="canonical" сслыки вели на главную
    • делать разные заголовки и описание в title и description для каждой страницы пагинации

Разные заголовки и описание можно добавить через настройки Yoast используя специальные переменные. Идем SEO → Заголовки и метаданные → Таксономии и добавляем нужные переменные. Должно быть так

Переменная page для уникализации заголовков и описаний страниц пагинации
Переменная page для уникализации заголовков и описаний страниц пагинации

Тогда в исходном коде будет так, при условии что у вас заполнено описание для рубрик

Результат уникализации заголовков и описаний страниц пагинации
Результат уникализации заголовков и описаний страниц пагинации

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

к содержанию

Как вернуть добавление ключевых слов после обновления Yoast?

Не знаю зачем нужны вам эти ключи, но если сильно надо, то все возможно.

Нюанс!
Если вы до обновления использовали добавление ключевых слов и у вас было много статей с заполненным этим полем, то вернуть значения этого поля не получиться. Поле удаляется из базы данных при обновлении до Yoast 6.3. Поможет только восстановление из бекапа.

Итак, возвращаем функционал добавления ключевых слов. Потребуется создать метабокс. Для этого проще использовать плагины, коих вагон:

Можно использовать любой из списка, будет отличаться только вывод полей. Рекомендую ACF (Advanced Custom Fields) показывать буду на нем.

После установки плагина появиться дополнительное меню

Управление ACF

Создаем группу полей и в ней создаем одно текстовое поле.

Группа полей в ACF

Обязательно указываем: ярлык поля на русском, имя поля — на латинице (это важно!). И желательно для имени поля использовать префикс.

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

Местоположение поля в ACF

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

Собственно и все. Теперь в записях появиться метабокс

Метабокс для ввода ключевых слов

Теперь осталось вывести значения этого поля. Более менее универсальный код (проверялся только с ACF).

Внимание! Код работает в именем поля art_metakey Если вы изменили имя, тогда измените его в коде.
/**
 * Вывод значений ключевых слов
 */
add_action( 'wp_head', 'art_add_field_keyword', 1 );
function art_add_field_keyword() {
   global $post;
   $keyword_field =  get_post_meta( $post->ID, 'art_metakey', true ) ;
   if ( $keyword_field ) {
      ?>
      <meta name="keywords" content="<?php echo esc_html($keyword_field); ?>">
      <?php
   }
}

 

к содержанию

Резюме

В итоге все должно получиться как было до обновления Yoast. Нужно это или нет, решать вам.

На этом все. Подписывайтесь на обновления, поделитесь статьей в соцсетях.

Всем удачи! Пока-пока.

13 комментариев
  • Серега

    01.03.2018

    Артем а почеме в первом коде, где закрываем пагинацию стоит 2? а во втором 0 (art_noindex_paged’, 0)

    • Артем

      02.03.2018

      Ну такие приоритеты, чтобы данные первыми выводились, можно и там и там 0 использовать или 2, но не больше 5

  • Алекесей

    04.03.2018

    Установил плагин — Anti Func, нажал на редактирование в админке, установил первый код :

    /*
     * Закрытие страниц пагинации от индексирования
     */
    add_action( 'wp_head', 'art_noindex_paged', 2 );
    function art_noindex_paged() {
       if (is_paged()){
          ?>
          
          <?php
       }
    }
    

    Пишет — invalid_plugin и подсвечивает последнюю скобку и ту что после этого кода —
    function art_noindex_paged() {
    Почему не доскажете?

    • Артем

      04.03.2018

      Что надо досказать? Что код надо вставлять аккуратно и внимательно?
      Проверил и с плагином и в файл, все работает

  • Ксения

    16.03.2018

    У меня тоже на скобку ругается

    • Артем

      22.03.2018

      Эт явно скопировали не верно, код проверен несколько раз

  • campusboy

    26.03.2018

    Привет, Артём. Спасибо за статью. Думаю, указывать nofollow не правильно — мы тем самым запрещаем роботу переходить дальше по ссылкам на этой странице, что может снизить скорость индексирования сайта. Лучше заменить nofollow на follow.

    • Артем

      30.03.2018

      Привет! Согласен, можно и нужно так делать. Обновлю статью. Спасибо

  • Игорь

    04.04.2018

    Артем, привет.
    Подскажи, у нас на главной странице весь контент выводится через AFC.

    А Yoast ругается, что на странице не выполняются его рекомендации. Например,

    «Текст содержит 0 слов. 900 слов. Это меньше рекомендованного минимума. Добавьте больше содержания, имеющего отношение к данной теме.»

    Рекомендации Yoast как я понял строятся на анализе контента, который через the_content выводится, а как сделать, чтобы он учитывал AFC

    • Артем

      12.04.2018

      Доброго! Есть плагин ACF Content Analysis for Yoast SEO, как раз для таких случаев

  • Андрей

    09.05.2018

    Зачем нужно вставлять код именно файл дочерней темы, почему не вставить в обычную тему?

    • Артем

      13.05.2018

      Чтобы при обновлении темы весь код не слетел. Если тема не будет обновляться, то можно и так пихать

  • Станислав

    18.05.2018

    Артем, у Вас на скрине Имя поля: art_meta_keywords, а в коде и предупреждении (цитата:»Внимание! Код работает в именем поля art_metakey Если вы изменили имя, тогда измените его в коде.») — art_metakey. Исправьте, а то люди запутаются. И спасибо за статью ;)

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *
php js HTML CSS Code