Сначала может показаться, что статья ни о чем. Но дело в том, что в комментариях ник автора выводится одной единственной функцией, которая сразу возвращает ссылку с анкором в качестве имени автора и ссылкой на его сайт. Поэтому требуется вмешательство бубна.
Недавно я сказал, что мой блог теперь dofollow. Но мои читатели разубедили меня в необходимости создания подобного блога и обретения гемороя на свою голову. Кстати, как только блог стал dofollow, количество комментариев возросло примерно аж в 10 раз и я вижу в этом некоторые корыстные цели :) Если честно, хотелось бы получать отзывы о своих статьях не за прямую ссылку, а за статьи. Поэтому я решил уже разобраться и определиться с этим вопросом окончательно и не вводить уже моих бедных читателей в заблуждение.
Итак, решение я увидел такое: т.к. мне было бы неприятно, если бы ссылки на сайты авторов комментариев не показывались бы вовсе, я решил отображать адреса сайтов комментаторов просто рядом с ником и нигде не ставить ссылку. Вообще никакую. Нет проблемы – не нужно ее решать.
Но, когда я залез в файл шаблона, содержащий комментарии (comments.php), то с удивлением обнаружил там строку get_comment_author_link(), которая и выводит ссылку. Сразу выводит ссылку.
Порывшись немного в документации по WP (куда я бы сослал вообще всех, т.к. там можно найти ответы на 99.9% вопросов о WP), я нашел пару функций, которые не сразу выводят ссылку в браузер и, таким образом, появляется возможность сохранить ее в переменную и выреать все теги.
Сразу оговорюсь: я не искали функцию, отдающую имя автора, мне было лень. Сделал проще – взял уже найденную функцию, отдающую ссылку с именем автора в анкоре и вырезал собственно тег <a> из нее.
Получается следующая картина.
Было:
<?php comment_author_link(); ?>
Стало:
<?php echo strip_tags(get_comment_author_link());
$url = strip_tags(get_comment_author_url_link());
if (!empty ($url)){
echo «(«.$url.»)»;
}
echo «пишет:»; ?>
Думаю, все всем и так понятно. Но поясню: сначала с помощью функции get_comment_author_link мы получаем ссылку на сайт комментатора в виде <a href=»site»>nick</a> и с помощью strip_tags вырезаем из нее тег <a></a>. То есть остается только имя автора без ссылки.
Потом мы с помощью функции get_comment_author_url_link получаем отдельно ссылку на сайт автора и опять же вырезаем из нее теги.
Там еще маленькая проверка – если сайт не указан, то ничего не выводить (если не проверять, то при не указанном сайте будут выводиться пустые скобки).
Таким образом я заменил ссылки в комментариях на ник и адрес сайта в скобках рядом. Думаю, никто не обидется. Захотят перейти на Ваш сайта – ссылка есть.
P.S. Для любителей рефакторинга и оптимизации: тут на два вызова stript_tags больше. Их могло бы и не быть, если бы я хорошо порылся в документации. Но я не считаю, что проигрышь в пару сотых секунды спасет отца русской демократии ;) Так что не начинайте нудить, пожалуйста ;)