Удаляем link rel=’prev’ и link rel=’next’ из кода WordPress

Евгений
Автор статьи: Евгений
Веб-мастер, SEO-специалист. Занимаюсь созданием и продвижением сайтов с 2012 года.
опубликовал: 135 статей
Содержание:

Как известно сейчас поисковые системы Яндекс и Гугл наказывают за дублирование контента. При чём часто под санкции попадают самые обычные блоги на WordPress, которые не создают специально дублированные страницы, не занимаются чёрным SEO. То есть даже Ваш обычный бложик может иметь такую проблему.

Прежде чем читать далее задайте вопрос, а надо ли Вам удалять эти теги?

  • Если Вы оптимизируете только под Google  - ответ нет. Этот поисковик прекрасно понмиает эти теги.
  • Если Вы оптимизируете только под Яндекс  - ответ да.
  • А вот если под оба поисковика, тут вопрос сложнее. В этотм случае "next" и "prev" лучше оставить, а страницы пагинации рубрик и меток закрыть тегами <meta name="robots" content="noindex, nofollow" />. Ниже в комментариях это обсуждается.

 

Дубли это результат работы некоторых плагинов и самого движка WordPress. Прямо сейчас откройте исходный код (сочетание клавиш Ctrl+U) страницы рубрики, тегов или любой другой страницы где есть пагинация и проверьте поиском наличие такого фрагмента кода:

rel="next" или rel="prev"

Вот как это может выглядеть:

Удалить rel='next' и rel='prev'Это конечно не катастрофа, но по таким ссылкам перетекает статический вес страницы + создаются дубли. Поэтому если хотите избавиться от этой проблемы - то вперёд.

Итак самые известные "вредители" это любимые многими сео-плагины All in One SEO Pack и WordPress SEO by Yoast. Иногда появление такого кода  - это проблемы установленной темы.

к содержанию ↑

В некоторых устаревших темах реализована функция создающая ссылки на предыдущий и следующий пост. Для удаления его необходимо в functions.php дописать:

remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0 );
remove_action( 'wp_head', 'wp_shortlink_wp_head', 10, 0 );

Плагин WordPress SEO by Yoast

 

  1. Вариант первый - через хак. Добавляем в functions.php.
add_filter( 'wpseo_next_rel_link', '__return_false' );
add_filter( 'wpseo_prev_rel_link', '__return_false' );

2. Можно исправить код плагина, но будет работать только до следующего обновления. Исправить код плагина можно через админку или по FTP. Через админпанель:

изменения плагинаЕсли по FTP, то  соединяемся с сайтом и в папке плагина находим файл wordpress-seo/frontend/class-frontend.php. Скачиваем его, открываем и находим примерно такие строки

$this->adjacent_rel_link( 'prev', $url, ( $paged - 1 ), true );

и комментируем их:

//$this->adjacent_rel_link( 'prev', $url, ( $paged - 1 ), true );

Я искал такие строки по фрагменту adjacent_rel_l, смотрите рисунок:

WordPress SEO by Yoast удаление дублейВсего таких строк мне пришлось закомментировать шесть.

Теперь обновляем страницу, снова смотрим исходный код - и вуаля - проблема решена.

к содержанию ↑

Плагин All in One SEO Pack

 

  1. Вариант первый - через хак. Всё будет прекрасно работать, но только до следующего обновления плагина. Поэтому, чтобы решить эту проблему раз и навсегда необходимо в functions.php дописать:
add_filter('aioseop_prev_link', '__return_empty_string' );
add_filter('aioseop_next_link', '__return_empty_string' );

2. И редактированием файлов. Тут всё аналогично. Ищем в файле aioseop_class.php строки:

if ( !empty( $prev ) ) $meta_string .= "<link rel='prev' href='" . $prev . "' />\n";
if ( !empty( $next ) ) $meta_string .= "<link rel='next' href='" . $next . "' />\n";

И удаляем или комментируем их.

А вот теперь уже точно всё

Удачи Вам в борьбе с дублями!

21 thoughts on “Удаляем link rel=’prev’ и link rel=’next’ из кода WordPress”

  1. АватарНиколай

    Здравствуйте, а ссылки на предыдущий и следующий пост на внутренних страницах вредят?

    1. EditorEditor Post Author

      Это и не плохо и не хорошо. Это пережиток десятилетней давности ,когда так помогали индексировать статьи.
      Вот удалять ли эти атрибуты и ссылки на страницах пагинации рубрик и тегов, это другое дело. Потому что даже опытные сеошники не пришли к единому мнению. Самая главная проблема в том, что Гугл и Яндекс по-разному относятся к страницам пагинации. Поэтому если Ваш сайт рассчитан на Запад или Украину — то там проще, нужно ориентироваться только на Гугл.
      В Рунете чуть сложнее.

  2. АватарОльга Смирнова

    Подскажите, пожалуйста, где найти этот файл aioseop_class.php? Что то я у себя не найду

  3. АватарОльга Смирнова

    А где конкретно эти строки прописать? В середине, в конце? В этом файле много разделов

    1. EditorEditor Post Author

      Ольга, обавлять нужно в конце function.php. Но судя по вопросу, Вы новичок.
      Может Вам не трогать код? Потратье время на написание новых качественных статей.
      А вот эти rel=’prev’ — это ужетак сказать «вылизывание». Решительного преимущества они не дают.

  4. АватарОльга Смирнова

    Я не новичок, но с кодами не работала. У меня сейчас полезли дубли записей, в урле с цифрами на концах. Я знаю, что проблему нужно решить так, как написано у вас. Раньше я уже обращалась к программисту и он оставил мне ссылку на вашу статью.
    Я напишу в конце файла. Только еще вопрос, после знаков ?> или перед ними?

    1. EditorEditor Post Author

      Ого. Меня программисты цитируют. Приятно…
      А код нужно ставить до знаков ?>
      Насчёт закрытия дублей, почитал западные блоги — и сейчас поступаю по-другому.
      Я всё открываю в robots.txt, и добавляю на нужные страницы noindex,nofollow. Но кстати это по-моему можно вручную сделать в Yoast.
      На данном блоге пока не реализовал. Но на тестовом есть ощущение что Google это нравится — трафик вырос.
      Ну и в целом надо смотреть блог и что там за дубли вылезли.

  5. АватарОльга Смирнова

    в robots.txt у меня тоже давно все открыто. Дубли сейчас другого плана.
    Спасибо! Надеюсь, у меня все получится.

    1. EditorEditor Post Author

      Кстати эти линки могут генерироваться:
      — Темой
      — Плагином WP-PageNavi
      — Плагином Yoast
      Здесь только одно решение. Для WP-PageNavi и темы надо смотреть отдельно.

  6. АватарОльга Смирнова

    У меня, кажется, из-за плагина All in One SEO Pack
    Понаблюдаю, что получится

    1. EditorEditor Post Author

      Посмотрел сайт. Я так понимаю речь о страницах типа ***.html/8/ — т.е. страницах пагинации.
      Думаю в All in One SEO Pack есть настройка поставить на такие страницы meta name=»robots» content=»noindex, follow». Я пользуюсь Yoast, там есть.
      Проверьте в исходном коде — у Вас сейчас вообще нет meta name=»robots» на таких страницах.
      Если поставите — через пару недель все такие страницы должны выпасть из индекса

  7. АватарОльга Смирнова

    Если б я понимала, что и где написать! )) А Вы можете мне помочь?

  8. АватарСергей

    Здравствуйте! Поставил: add_filter( ‘wpseo_next_rel_link’, ‘__return_false’ );
    add_filter( ‘wpseo_prev_rel_link’, ‘__return_false’ ); в конце functions.php перед знаком >? , но проблема осталась(( или эти ссылки сразу не удаляются? А как можно закрыть в Yoast?

    1. EditorEditor Post Author

      Значит в Yoast что-то поменяли и код не работает. Надо смотреть, разбираться. Но в целом закрытие prev и next это для Яндекса. Если под Гугл их надо оставлять.

Leave a Reply

Your email address will not be published. Required fields are marked *