При разработке темы 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: как удалить или сделать неактивной ссылку на сайт комментатора»
Павел (4 комментария)
Завел, из вредности, Disqus. На 99.9% защита от спама. И заморочек меньше.
Черепахен (1 комментарий)
От автоматического? Ну да… может быть… Но от ручного все равно не спасет! Лично я привык к Antispam Bee.
Виктория (3 комментария)
Отличная вещица и себе поставлю!
lostfilm (1 комментарий)
Полезная информация, спасибо автору
Алексей (1 комментарий)
Спасибо!Искал как это сделать.Подруга пожаловалась,что хотела оставить комментарий у меня на сайте,но не хотела вводить почту,убрал в админке обязательный ввод имейла,но поле все равно не исчезает.Т.е. почту можно не вводить.И вот теперь думаю как убрать поле ввода почты
Княгиня (660 комментариев)
А вот не советую убирать. По е-мейлу Вордпресс опознаёт комментаторов, считает количество комментариев и выводит граватар. Если человек не хочет вводить е-мейл — его дело, но надо оставлять такую возможность тем, кто хочет, чтобы их узнавали.
Хогвард (1 комментарий)
А я вот не всегда люблю оставлять электронную почту. Потом спам. Но благо можно для этого дела завести отдельный почтовый ящик.
Княгиня (660 комментариев)
На Вордпрессе емейл позволяет опознать пользователя. По емейлу же считается количество комментариев. Опять же, граватарка по нему же. И Вордпресс не показывает емейла другим посетителям — только хозяину сайта. А вот гостевые в том виде, как они были на Народе.ру как раз тем и страдали, что показывали емейл всем подряд.
Илья (1 комментарий)
спамеры последнее время реально активизировались и это касается уже не только интернета, который по причине своего устройства плодит кучу ненужной информации, но и телефон, регистрация на любой площадке приводит к куче присланных спам-сообщений, поэтому вообще о спаме надо задумываться на этапе создания и стратапа…) Был сайтик один на «прессе», но такой прием не использовал)
Пётр (3 комментария)
А зачем всё настолько усложнять? Комментарий в Вордпрессе всё-равно публикуется не сразу, а только после моей проверки и моего одобрения, так что спаммеры, в любом случае, не пройдут. Так в чём проблема при одобрении просто нажать «изменить» и вручную удалить ссылку коментатора, причём так же можно сразу же и одобрить? Занимает это действие около 5-10 секунд и даёт возможность как удалять, так и оставлять комментарии.
Княгиня (660 комментариев)
А зачем вообще интернет? Зачем усложнять жизнь, если можно жить с огорода, а развлекаться хороводами? Жили же так наши предки, и ничего, не скучали…
Как я сказала в самом начале поста (читаем, прежде чем давать советы!), от спама это всё равно не помогает, это нужно для другого. Сей рецепт у меня спрашивал конкретный живой человек, которому такое нужно (и даже объяснил, как именно ему нужно). Мне — не нужно, у меня другое.
А ещё есть люди, у которых сотни комментаторов на каждый пост. Не все они готовы тратить «5-10 секунд» на каждый комментарий.
Сергей Медведев (12 комментариев)
Спасибо большое, Княгиня, за этот пост!
Постараюсь разобраться, как все это внедрить теперь
дом4 (1 комментарий)
Да мне кажется тоже дискус как то интересней выглядит обычных комментариев, да и популярней что ли!
uglion (2 комментария)
И чем же это дискус интереснее? Уж не тем ли, что владельцем комментариев становится сторонний сайт? Комментарии — это контент, пусть лучше пользователи пишут ВАМ бесплатный контент, а не левому сайту.