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

Содержание:

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

Дубли это результат работы некоторых плагинов и самого движка 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. Editor Post Author

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

    1. Editor Post Author

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

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

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

    1. Editor Post Author

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

    1. Editor Post Author

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

    1. Editor Post Author

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

  3. Сергей

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

    1. Editor Post Author

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

Leave a Reply

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