VovkDesign

Блог Александры и Владимира Вовк

RSS лента
wp-puzzle

Как закрыть комментарии от индексации в WordPress

В одной из прошлых статей, я рассказал о закрытии ссылок от индексации с помощью JavaScript. Сегодня же, хочу показать Вам, как закрыть ссылку комментатора от индексации в WordPress. В статье я приведу рабочие примеры кода функции, которая работает на рассмотренных нами ранее скриптах для скрытия ссылок от роботов.

как закрыть ссылку от индексации

Для начала, Вам обязательно нужно ознакомиться с моей статьёй «Закрытие ссылки от индексации» и выполнить вставку приглянувшегося джаваскрипта в «Подвал» (footer.php). Если Вы уже используете один из предоставленных скриптов, то просто читаем статью дальше.

Как закрыть комментарии в WordPress

Я не буду повторно описывать зачем нужно закрывать комментарии и почему это необходимо делать именно через JS. Всё это хорошо описано в прошлой статье по данной теме, а так же разжевано и пережёвано в комментариях к ней. Я просто предоставлю Вам рабочий код  функции, которая будет прятать неугодные нам ссылки.

Пример кода для скрытия ссылки на сайт комментатора

Как и в предыдущей статье, будет несколько методов закрытия ссылки. Связано это с тем, что мы можем использовать 2 вида cкриптов из прошлой статьи, каждый из которых делится на два варианта — для HTML4 и HTML5 соответственно. И так, приступим.

Заходим в «Консоль» WordPress → Внешний вид -> Редактор.

Справа в шаблонах находим и нажимаем на «functions.php» В открывшемся редакторе опускаемся для удобства в конец кода и вставляем код функции до строчки с кодом ?>, заранее выбрав нужный вариант.

Первый способ закрытия ссылки автора комментария

Применяется, если используется соответствующий JavaScript из предыдущей статьи, когда скрипт сам открывает ссылку (способ 1)

Для HTML4

/* ==========================================================================
 * Функция закрытия ссылки комментатора через JS
 * Параметр $link - html-код ссылки комментатора
 * ========================================================================== */
function avd_comment_author_link( $link ){
    $link = str_replace( // вызываем функцию замены в строке
        array('<a', '</a>', 'href='), // что заменяем
        array('<span class="mylink"', '</span>', 'rel='),
        // array('<span class="mylink"', '</span>', 'data-url='), // на что заменяем
        $link // в строке с html-кодом ссылки
    );
    return $link; // возвращаем новую ссылку после замены
}
// подключаем фильтр
add_filter( "get_comment_author_link", "avd_comment_author_link" );
/* ========================================================================== */

Для HTML5

/* ==========================================================================
 * Функция закрытия ссылки комментатора через JS
 * Параметр $link - html-код ссылки комментатора
 * ========================================================================== */
function avd_comment_author_link( $link ){
    $link = str_replace( // вызываем функцию замены в строке
        array('<a', '</a>', 'href='), // что заменяем
        // array('<span class="mylink"', '</span>', 'rel='),
        array('<span class="mylink"', '</span>', 'data-url='), // на что заменяем
        $link // в строке с html-кодом ссылки
    );
    return $link; // возвращаем новую ссылку после замены
}
// подключаем фильтр
add_filter( "get_comment_author_link", "avd_comment_author_link" );
/* ========================================================================== */

Второй способ закрытия ссылки

Применяется, если вставлен аналогичный ему второй способ JavaScript, когда JS заменяет текст на код ссылки.

Для HTML4

/* ==========================================================================
 * Функция закрытия ссылки комментатора через JS
 * Параметр $link - html-код ссылки комментатора
 * ========================================================================== */
function avd_comment_author_link( $link ){
    $link = str_replace( // вызываем функцию замены в строке
        'href=', // что заменяем
        'href="#" class="mylink" rel=', // для html4
        //'hfre="#" class="mylink" data-url=', // на что заменяем
        $link // в строке с html-кодом ссылки
    );
    return $link; // возвращаем новую ссылку после замены
}
// подключаем фильтр
add_filter( "get_comment_author_link", "avd_comment_author_link" );
/* ========================================================================== */

Для HTML5

/* ==========================================================================
 * Функция закрытия ссылки комментатора через JS
 * Параметр $link - html-код ссылки комментатора
 * ========================================================================== */
function avd_comment_author_link( $link ){
    $link = str_replace( // вызываем функцию замены в строке
        'href=', // что заменяем
        //'href="#" class="mylink" rel=', // для html4
        'hfre="#" class="mylink" data-url=', // на что заменяем
        $link // в строке с html-кодом ссылки
    );
    return $link; // возвращаем новую ссылку после замены
}
// подключаем фильтр
add_filter( "get_comment_author_link", "avd_comment_author_link" );
/* ========================================================================== */

Внимание!

  1. Перед установкой кода функции, проверьте наличие скрипта скрытия ссылок в footer.php. Если вы его ещё не ставили, сделайте это, руководствуясь соответствующей статьёй у меня на блоге.
  2. Внимательно выбирайте нужную функцию. Она должна соответствовать использованному скрипту, закрывающему ссылки от индексации.

Видео урок закрытия ссылки автора комментария от индексации.

PS. Если вам пригодилась моя статья, лучшей благодарностью от Вас станет подписка на нашу рассылку. Если у вас возникнут проблемы или вопросы — смело пишите нам. Мы всегда поможем Вам справиться с любыми трудностями.

14 января 2015 года мы выпустили плагин Hide Links, с помощью которого можно легко скрыть ссылку в тексте статьи без ручного добавления кодов и скриптов. Также этот плагин автоматически скрывает ссылки комментаторов.

Детальное описание плагина доступно на нашем сайте и в каталоге плагинов WordPress.

Комментарии всего: 70

  • Владимир здравствуйте, у меня опять куча вопросов. Этот скрипт и из прошлой статьи они взаимодействуют как то с друг другом или же их можно использовать и по отдельности? А вот в топе комментаторов он тоже закроет ссылки или нет? И как узнать у меня html 4 или 5, где это можно посмотреть?
    Ну и вопрос немного не в тему, как сжимаются скрипты для лучшей загрузки сайта, мне нужно сжать скрипт ротабан, это как то возможно, если у вас есть уже статья на подобную тему, дайте плиз, ссылку.

    • В этой статье представлен код, который взаимодействует со скриптом из прошлой статьи. Отдельно он работать не будет. Именно по этому я написал в начале статьи, что нужно вставить скрипт из прошлой темы.
      Код закроет от индексации ссылку комментатора только в комментариях. Зачем ставить блок ТОП комментатора и закрывать в нём ссылку? Вы себе этим только карму попортите 🙂 Суть блока же стимулировать посетителей писать комментарии для получения ссылки на свой ресурс.
      По поводу того, как узнать какой HTML используется. Сейчас добавлю эту информацию в прошлую статью, так как этот вопрос действительно может возникать довольно часто. У вас HTML5
      Можете попробовать воспользоваться онлайн сервисами для сжатия скриптов этим или этим

  • С JS что-то не выходит, ну, в смысле, вторым способом.
    Ссылка получается открытой вообще.

    А первый способ не идеален тем, что не понятно, ссылка это или нет. Хотелось бы как у Вас в комментариях.
    http://prntscr.com/4f4yzi

  • Второй способ, который Вы используете, работает. Просто скрипт подменяет ссылку. Таким образом, когда вы проверяете, скрипт уже сработал и предоставил вам обычную ссылку. Отключите javascript в браузере, и вы увидите закрытую ссылочку.
    У нас используется первый способ скрипта со span. Если решите сделать так же, не забудьте прописать стили для скрытой ссылки. Это есть в статье со скриптами для закрытия ссылок (самый последний вариант кода ссылки)

  • Скажите, а как сделать, чтобы комментарии в WP индексировались поисковиками?

  • А где лучше проверять, открыты ссылки или нет?
    Я тут попутно нашла у себя вредоносный код, удалила… А на linkpad удаленные ссылки все равно торчат, видимо, он не сразу обновляется? А вот ссылок комментаторов в нем нет почему-то.

    • Linkpad использует свою собственную базу индексации, которая обновляется уж очень туго. Этот сервис полезен только для начального быстрого анализа ссылочной массы. Есть программа, которая умеет парсить ссылки на всех страницах сайта — xenu. Я писал о ней в своей статье о поиске битых ссылок В статье есть ссылка на скачивание. Правда для новичка работать с ней будет трудновата из-за количества данных.

      • Для битых у меня стоит Broken Link Checker, но это ж не совсем то.
        Постранично ссылки я здесь обычно смотрю dinews.ru

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

          • Оказывается, она у меня даже есть, эта прога… И может даже от вас )))
            Спасибо. Потом поизучаю на досуге.

  • Вставила код для HTML 4 по первому способу, и ссылки на сайты комментаторов вообще исчезли… 🙁
    Попробую второй…

    • Кроме функции из этой статьи, нужно ещё добавить скрипт из статьи про закрытие ссылок от индексации. Без него функция работать не будет!

      • Так я поставила.

        • Сверьтесь, чтобы код скрипта соответствовал написанному мною ниже

          • Три раза уже перекопировала…
            На первом сайте хорошо сработало. Может, тут с шаблоном что-то не то?

          • У вас стоит плагин кеширования. Попробуйте зайти на страницу настроек плагина и нажмите кнопку «удалить весь кеш»

      • Владимир, а есть статья у вас о том, как сделать себе на сайт вот такую страницу благодарности http://avovkdesign.com/bymecoffee как у вас. Очень благодарны будем вам. Спасибо. Подписался на обновления вашего сайта.

    • А именно, если вы ставили функцию из первого варианта:
      Заходим в меню Внешний вид → Редактор, справа ищем footer.php, открываем его и перед строкой вставляем следующий код:

      <script type="text/javascript">
       jQuery(document).ready(function($) {
           $('.mylink').click(function(){
               window.open( $(this).attr('rel') );
           });
       });
      </script>
  • Мда, со вторым способом что-то не срослось, пришлось бэкап делать.
    А еще другие варианты есть?

  • Попробовала еще раз первый способ, вроде получилось. Только Xenu все равно видит кучу ссылок из комментов. А также кучу ссылок на граватар…. ничего не понимаю…

    • Функция закрывает только ссылку на сайт автора комментария. Если ссылка стоит в средине текста самого комментария, то она будет открытой. Подобные ссылки нужно закрывать вручную с помощью JS.

  • Здравствуйте, Владимир.
    У меня какая-то петрушка получилась)). Поставила скрипт и код как положено — ссылки авторов комментарий стали неактивными вообще. А когда поставила скрипт №1, а код №2 (у меня HTML 5), то ссылка есть, но не отображается внизу экрана. Перейти по ней можно. Я почему пишу — я закрыла эти самые ссылки на сайты комментаторов или нет? 🙂 . В этих вопросах я чайник совсем, поэтому не удивляйтесь))).
    Спасибо.

    • Да. ссылку комментатора вы закрыли. Внизу страницы адрес ссылки не должен отображаться.
      Остался маленький штрих, чтобы курсор при наведение на ссылку отображался правильно, нужно сделать следующее:
      зайдите в меню Внешний вид → Редактор, справа ищем style.css. Открываем его и в самом низу дописываем эти строки:

      .mylink {
      cursor: pointer;
      }

      Вот и всё.

  • Владимир, здравствуйте!
    Сделал вторым способом — получилось: ссылка закрылась. Только вот, когда ее нажимаешь с целью проверки перехода на сайт автора комментария, самого перехода не происходит, а идет переход на ту же рубрику с надписью external%20nofollow после слэша.
    Если сможете, Владимир, подскажите пожалуйста, что не так.
    С уважением!

  • Благодарю за ответ, Владимир. Здравствуйте!
    Да, действительно, несовпадение кодов скрипта и вызова функции налицо 🙂 поскольку ваше решение нашел на просторах Рунета уже далеко за полночь.
    Когда же коды скрипта и функции оба поставил для HTML 4, то в файле functions.php вылезла синтаксическая ошибка на строку функции: 'href="#" class="mylink" rel='), // для html4 вот в таком виде (Parse error: syntax error, unexpected ‘,’ )
    Т.е, если я правильно понял, браузеру почему-то не понравилась в этой строке кода запятая после скобки.
    А с первым способом проблем никаких — работает.
    Все же мне хотелось бы скрыть ссылки вторым способом, как на вашем блоге, Владимир.
    Проверил синтаксис — все в точности, как в вашей статье ( копировал и вставлял через буфер обмена).
    По возможности, дайте пожалуйста знать, что не так.
    С уважением!

    • Игорь, во втором способе действительно допущена синтаксическая ошибка. Приносим свои извинения. Код в статье уже исправлен, в этой строчке нужно убрать скобку.
      Что касается способа сокрытия, то на нашем блоге как раз таки первый используется (с тегом span).
      И еще очень рекомендую прочесть мою статью о function.php — подход, описанный там поможет избежать проблемы с ошибками и недоступностью сайта.

  • Александра, благодарю за скорый ответ! Добрый день!
    Вставил исправленный код функции из второго способа — ошибка исчезла, это факт. Только, почему-то ссылки авторов комментариев в результате оказались не закрыты.
    Ну да ладно. Раз вы говорите, что используете способ закрытия ссылок №1, последую вашему примеру и я.
    А статья о собственном плагине потрясающая, благодарю. Признаться, я и не подозревал о таком оригинальном решении. Это действительно очень удобно.
    Отдельно хочу признаться, что очень рад, что обнаружил ваш ресурс на просторах рунета. Вне всякого сомнения, он очень полезен. Поэтому, с удовольствием осуществил на него подписку по e-mail, за что вам, уважаемые Владимир и Александра, большой респект.
    И что особенно приятно — вы находите время на скорые, конкретные и, главное, полезные ответы вашим читателям, что в наше время, безусловно, большая редкость.
    Благодарю вас за действенную помощь по моей проблеме.
    С уважением!

    • Игорь, спасибо за теплые слова в наш адрес. Стараемся быть полезными 🙂

  • Здравствуйте. У меня Html4 . Использовал скрипт из способа 1 и код из способа 1, но код вставлял уже не в functions.php, а в созданный альтернативный myfunction.php. Код Css добавил, но почему то ссылка внизу экрана отображается как внутренняя, указывающая на мою статью, хотя переход по ссылке осуществляется на сайт комментатора. Подскажите пожалуйста, так должно быть или можно что-то подправить? И как теперь в ссылку добавить rel=»external nofollow» как на вашем сайте.

    • Сейчас у Вас всё правильно — при наведении на ссылку автора комментария адрес внизу браузера не отображается, при клике происходит переход на нужный сайт.
      А зачем Вам вообще нужен rel=»external nofollow»? Так и должно быть, потому что в атрибут rel записывается адрес ссылки. У нас данный параметр остаётся, потому что используем html5.

  • Спасибо, успокоили. А на счет rel=»external nofollow», поторопился с вопросом не разобравшись. При просмотре кода элемента у меня он не отражается, а при просмотре кода страницы он присутствует.

  • Поздравляю с Новым годом, Александра и Владимир! Желаю счастья, удачи, мира в душе и во всем мире! Спасибо за ваш очень полезный блог.

    И можно еще вопросик?
    Как быть с кучей одинаковых и неуникальных стихотворений, которыми пестрят комментарии в праздники?..

    • Спасибо за поздравление, Лариса.
      Это же комментарии, а не статья. Поисковики давно умеют их отличать и нет ничего страшного в их не уникальности.

      • Говорят, что и в самих статьях уникальность не главное, иначе сайты с кучей детских сказок, стихов и прочих необозначенных цитат не попадали бы в топы… Или сначала нужно заслужить трастовость, а потом уже публикуй все, что вздумается?

        • Уникальность играет очень важную роль при ранжировании. Часто в практике были случаи, когда удавалось продвинуть сайт клиента по конкурентному запросу исключительно за счёт уникальных и более информационных текстов, нежели у трастовых конкурентов. Обычно подобный фокус удаётся провернуть в узконапраленной коммерческой нише, в топе которой висят старые редко обновляемые сайты с рерайчеными друг у друга текстами. Так что уникальность — один из важнейших факторов для текстов.
          Хотя бывает, когда в погоне за показателем уникальности, тексты доводят до того, что их просто невозможно читать. Недавно на глаза попадалась кулинарная статья, в которую для уникальности автор напихал множество «вычурных» и неиспользуемых в наши дни слов. Читать было невозможно. Естественно, я не стал дочитывать тот пред и пошел искать информацию на других источниках. Вывод сделайте сами.
          С сайтами, которые предоставляют не уникальную информацию (литературные, технические и т.п) всё немного по другому. Там конкуренция идет среди себе же подобных. В топе обычно висят старые трастовые сайты, и пробиться новичку там ой как не просто. Нередко молодые проекты в подобной сфере «умирают» ещё на старте, что в принципе не удивительно. К примеру, в поиске есть 1000 сайтов, которые предоставляют информацию о фильме. Там все просто и одинаково — актёры, режиссер, жанр, краткое описание сюжета (предоставляется кинокомпанией) и прочее. У всех всё под копирку. И тут появляется ещё один такой же сайт, который ничем не отличается от предшественников и не несёт никакой дополнительной информации. Естественно поисковик этот сайт будет плохо индексировать, выкидывать из ранжирования и накладывать разнообразные фильтры, баны, санкции. Одним словом, с конкуренцией в данной сфере всё сложно.

          • Понятно. Спасибо, Владимир, за такой подробный ответ!

  • А как то можно закрыть комментарии от индексации? Чтоб текст комментариев вообще не был виден?

    • Сделать можно всё 🙂 Данный метод в статье только для ссылок. Реализовать закрытие комментариев можно, но это уже отдельная задача и не для обсуждения в комментариях. Если интересует, можем обсудить по почте

      • Столкнулся с одной проблемой. У одного поста высокие показатели отказов. 89%…
        Стал копать, посмотрел все ключевые слова по которым переходили. Большая из них ссылается частично на комментарии. Щас пока в ручную почистил. Посмотрю что будет после индексации.

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

    • Можно доработать функцию, добавив список разрешенных адресов. В функции закрытия сравнивать разрешённый адрес с адресом комментатора. Доработать можно,но только по индивидуальному заказу.

  • Подскажите такой вопрос? Оставил коментарий на одном сайте, после чего в яндекс вебмастере c этого сайта появилось множество внешних ссылок на страницы моего сайта (около 400) Это плохо или нет? И как можно их удалить или может что -то посоветуете? Самих внешних ссылок с сайтов 16, а с одного 400?

  • Здравствуйте! Знаю, что не совсем по теме, но не нашла подходящий пост. Помогите пожалуйста! Не знаю к кому еще обратиться. В форме комментариев некоторое время назад исчезла кнопка «Отправить», но я заметила только сейчас, даже не знаю, что повлияло. Может, сама случайно удалила чего, т.к. пыталась убрать уродливые смайлики после очередного обновления WordPress. Может, еще какие причины… У меня вопрос: Вы можете подсказать код и куда вставить, чтобы вернулась кнопка на родину? Про Бэк-Ап речи быть не может, т.к. с того времени много изменений прошло. Буду очень-очень Вам благодарна за любую подсказку, как выйти из положения!

    • Марина, это могло произойти не после обновления, а после редактирования файлов темы. Попробуйте отключить все плагины и посмотреть — если кнопка не появится, то найдите ранние бэкапы и скопируйте из него только один файл comments.php из темы шаблона. Просто сказать код я не могу, т.к. не знаю как у Вас реализован шаблон.

      • Спасибо, Александра! Я зря на свои ручки грешила. 🙂 Сейчас выяснила на официальном форуме тех. поддержки, что после обновления на версию Вордпресса 4.2.1 и 4.2.2 в некоторых шаблонах исчезла кнопка «ответить». Как я поняла, в 4.2.3 обещают исправить положение. Пояснили проблему так:

        Проблема проявляется в темах оформления, которые с помощью фильтра
        comment_form_defaults полностью перезаписывают массив аргументов для функции comment_form(), игнорируя все переданные аргументы.

        Мне сложно без знаний php в этом разобраться, поэтому остается только ждать новую версию и надеяться, что там проблему устранят.

  • Хорошая статья то, а почему, у себя ссылки не закрыл?

    • Все ссылки авторов комментаторов закрыты у нас на блоге с помощью подмены javascript. Наверное, вы смотрите код уже после подмены.

  • Владимир, благодарю за функцию… так давно пользуюсь скриптом с подменой ссылки, но это каждый раз при обновлении движка надо было менять коммент — теплейт, а последнее время у меня вообще слетал вордпресс при попытке это сделать… А тут такое классное решение!
    У вас случайно не описано решения — как вставить эту же функцию в админ панель, чтобы одной кнопкой в редакторе делать ссылку невидимой?

    • Александр Алексеенко, Вы можете использовать в этих целях наш плагин HideLinks. В нем как раз есть такая кнопка, он доступен в официальном каталоге WordPress.

  • Здравствуйте! Установил плагин HideLinks, и такой вопрос, после установки, он автоматически скрывает ссылки на сайт комментаторов? или нужно что то настроить?

    • Азат, да — после установки и активации плагин автоматически закрывает ссылку на сайт комментатора. Остальные ссылки (в тексте статьи, комментария или виджета) нужно закрывать вручную кнопкой или шорткодом

  • Здравствуйте Владимир! По закрытию ссылок после статьи все понятно! Спасибо. Но! Совсем недавно поставили на блог конкурс Топ комментаторов. Не подскажете как там закрыть ссылки авторов.

    • Только редактированием исходного кода плагина в том месте, где идет вывод ссылок.

  • Гениально, автору спасибо. Использовала — 2 способ — не понравилось. Взяла 1 вариант + декор и все работает. Класс. Толково и без воды.

  • А как бы реализовать следующее:

    На сайте грабером автоматически публикуются записи, в которых есть короткие ссылки (например https://goo.gl/R6WCqj).
    Надо, чтобы эти ссылки автоматически раскрывались в длинные (т.е. надо узнать куда ведет переадресация), обрезались куски с ref-вставками и затем происходила замена в публикациях.

    С частью раскрытия коротких ссылок более менее понятно (ниже код). А вот как бы это прикрутить к автоматической замене в публикуемых записях??

    <?php
    $url = "https://goo.gl/R6WCqj";
    @file_get_contents($url);
    
    
    	if(isset($http_response_header) && preg_match('#location:(.*)#i', implode("\r\n", $http_response_header), $m));
    	
    $location = trim($m[1]);
    • Подключите вашу функцию замены на фильтр the_content — он получает в параметры текст статей, в котором можно находить ссылки по регулярному выражению и заменять на новые адреса.

  • Здравствуйте! чего только не перепробовала, делала все четко по инструкции, ссылки не закрываются все равно. Шаблон Basiс ot wp puzzle. и плагин ставила на чистый шаблон Hide Links. не хотят ссылки закрываться. Может поможете?:)

    • Анжелика, а как Вы проверяете закрыты они или нет? По инструкции, которая в этой статье или как-то по-другому?

      • Здравствуйте, нет. Через сайт mainspy проверяла.

        • Анжелика, этот сервис показывает все ссылки сайта. А плагин автоматически закрывает только ссылки авторов в комментарии. Т.е., если у Вас есть ссылки в сайдбаре/шапке/статье — их нужно закрывать вручную, как это описано в данном параграфе.

Комментировать

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

*

wp-puzzle.com logo