WordPress: как удалить или сделать неактивной ссылку на сайт комментатора

26 марта 2013. Рубрики: Рабочие заметки; автор — Юлия Панина aka Княгиня.

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

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

В этой функции находим строку: comment_author_link или get_comment_author_link; это вывод или вызов готовой ссылки на сайт комментатора с его имени (а если ссылки нет, то только имени). Она может заключаться в коде вида:

<cite class="fn" itemprop="reviewer"><? comment_author_link() ?></cite>

или:

<?php printf( __( что-то там ), sprintf( '<cite class="fn">%s</cite>', get_comment_author_link() ) ); ?>

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

Чтобы вывести имя комментатора без ссылки, заменяем comment_author_link на comment_author (имя комментатора). Код принимает вид:

<cite class="fn" itemprop="reviewer"><? comment_author () ?></cite>

или соответственно:

<?php printf( __( что-то там ), sprintf( '<cite class="fn">%s</cite>', get_comment_author() ) ); ?>

Это простой случай, больше ничего делать не требуется. Но, допустим, вы хотите показать ссылку комментатора текстом. Тогда придётся, во-первых, вызвать урл ссылки и, во-вторых, убедиться, что он непустой; для этого используем функции WordPress get_comment_author_url и comment_author_url (вызов и вывод урла ссылки соответственно). В простом варианте это будет выглядеть так:

<cite class="fn" itemprop="reviewer"><? comment_author(); if(get_comment_author_url()){ ?> <em>(посетить его сайт: <? comment_author_url(); ?>)</em><? } ?></cite>

Этот код выведет строчку вида: «Вася (посетить его сайт: http://site.ru)». Для кода, использующего printf, это будет заковыристей:

<?php if(get_comment_author_url()){printf( __( что-то там ), sprintf( '<cite class="fn">%1$s <em>(посетить его сайт: %2$s)</em></cite>', get_comment_author(), get_comment_author_url() ) );}else{printf( __( что-то там), sprintf( '<cite class="fn">%1$s</cite>', get_comment_author()) );} ?>

Результат будет тот же. Правда, если вы вписываете свою фразу на русском языке («посетить его сайт»), переключение языков становится невозможным и использование printf теряет смысл.

Важно, что после такой переделки ссылки на комментаторов не будут видны (или не будут ссылками), но будут сохраняться в базе. Это позволит использовать их в других местах: в плагинах, выводящих топ комменаторов, и других. Но, повторюсь, от спама это не защитит. Пользуйтесь другими средствами.

Отзывы (124) на «WordPress: как удалить или сделать неактивной ссылку на сайт комментатора»
  1. Павел (4 комментария)

    Завел, из вредности, Disqus. На 99.9% защита от спама. И заморочек меньше.

    Ответить на этот комментарий
    • Черепахен (1 комментарий)

      От автоматического? Ну да… может быть… Но от ручного все равно не спасет! Лично я привык к Antispam Bee.

      Ответить на этот комментарий
  2. Виктория (3 комментария)

    Отличная вещица и себе поставлю!

    Ответить на этот комментарий
  3. lostfilm (1 комментарий)

    Полезная информация, спасибо автору

    Ответить на этот комментарий
  4. Алексей (1 комментарий)

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

    Ответить на этот комментарий
    • Княгиня (650 комментариев)

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

      Ответить на этот комментарий
      • Хогвард (1 комментарий)

        А я вот не всегда люблю оставлять электронную почту. Потом спам. Но благо можно для этого дела завести отдельный почтовый ящик.

        Ответить на этот комментарий
        • Княгиня (650 комментариев)

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

          Ответить на этот комментарий
  5. Илья (1 комментарий)

    спамеры последнее время реально активизировались и это касается уже не только интернета, который по причине своего устройства плодит кучу ненужной информации, но и телефон, регистрация на любой площадке приводит к куче присланных спам-сообщений, поэтому вообще о спаме надо задумываться на этапе создания и стратапа…) Был сайтик один на «прессе», но такой прием не использовал)

    Ответить на этот комментарий
  6. Пётр (3 комментария)

    А зачем всё настолько усложнять? Комментарий в Вордпрессе всё-равно публикуется не сразу, а только после моей проверки и моего одобрения, так что спаммеры, в любом случае, не пройдут. Так в чём проблема при одобрении просто нажать «изменить» и вручную удалить ссылку коментатора, причём так же можно сразу же и одобрить? Занимает это действие около 5-10 секунд и даёт возможность как удалять, так и оставлять комментарии.

    Ответить на этот комментарий
    • Княгиня (650 комментариев)

      А зачем вообще интернет? Зачем усложнять жизнь, если можно жить с огорода, а развлекаться хороводами? Жили же так наши предки, и ничего, не скучали…

      Как я сказала в самом начале поста (читаем, прежде чем давать советы!), от спама это всё равно не помогает, это нужно для другого. Сей рецепт у меня спрашивал конкретный живой человек, которому такое нужно (и даже объяснил, как именно ему нужно). Мне — не нужно, у меня другое.

      А ещё есть люди, у которых сотни комментаторов на каждый пост. Не все они готовы тратить «5-10 секунд» на каждый комментарий.

      Ответить на этот комментарий
      • Сергей Медведев (12 комментариев)

        Спасибо большое, Княгиня, за этот пост!
        Постараюсь разобраться, как все это внедрить теперь :)

        Ответить на этот комментарий
  7. дом4 (1 комментарий)

    Да мне кажется тоже дискус как то интересней выглядит обычных комментариев, да и популярней что ли!

    Ответить на этот комментарий
    • uglion (2 комментария)

      И чем же это дискус интереснее? Уж не тем ли, что владельцем комментариев становится сторонний сайт? Комментарии — это контент, пусть лучше пользователи пишут ВАМ бесплатный контент, а не левому сайту.

      Ответить на этот комментарий

Есть что сказать? Не молчим!

Используйте теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" code=""> <ul> <li> <ol> .

Комментарии короче 200 символов публикуются без активной ссылки. Пробелы не учитываются.

Ссылки с комментариев dofollow. Ознакомьтесь, пожалуйста, с правилами dofollow-комментирования. Кто не читает, тот сам себе враг.