|
Сначала может показаться, что статья ни о чем. Но дело в том, что в комментариях ник автора выводится одной единственной функцией, которая сразу возвращает ссылку с анкором в качестве имени автора и ссылкой на его сайт. Поэтому требуется вмешательство бубна.
Недавно я сказал, что мой блог теперь dofollow. Но мои читатели разубедили меня в необходимости создания подобного блога и обретения гемороя на свою голову. Кстати, как только блог стал dofollow, количество комментариев возросло примерно аж в 10 раз и я вижу в этом некоторые корыстные цели :) Если честно, хотелось бы получать отзывы о своих статьях не за прямую ссылку, а за статьи. Поэтому я решил уже разобраться и определиться с этим вопросом окончательно и не вводить уже моих бедных читателей в заблуждение.
Итак, решение я увидел такое: т.к. мне было бы неприятно, если бы ссылки на сайты авторов комментариев не показывались бы вовсе, я решил отображать адреса сайтов комментаторов просто рядом с ником и нигде не ставить ссылку. Вообще никакую. Нет проблемы – не нужно ее решать.
Но, когда я залез в файл шаблона, содержащий комментарии (comments.php), то с удивлением обнаружил там строку get_comment_author_link(), которая и выводит ссылку. Сразу выводит ссылку.
Поэтому совет от webmoneylog (08.06.2008 в 8:52) в моей статье о том, как сделать dofollow блог никуда не годится.
Порывшись немного в документации по 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 больше. Их могло бы и не быть, если бы я хорошо порылся в документации. Но я не считаю, что проигрышь в пару сотых секунды спасет отца русской демократии ;) Так что не начинайте нудить, пожалуйста ;)
Оставьте свой комментарий
|
13.06.2008 в 6:57 дп
$return = "<a href=’$url’ rel=’external nofollow’>$author</a>";
Даже самому простому :) программисту должно быть ясно, что такое изменение:
$return = «$author, $url»;
даст требуемый результат.
А обозначенная вами «строка, которая и выводит ссылку», вызывает функцию get_comment_author_link (файл comment-template.php). Эту функцию я и предложил поправить.
webmoneylog – а в тексте ссылки остаются :)
14.06.2008 в 4:20 пп
Даже самому простому программисту :) должно быть понятно, что править сам движок – некрасивое занятие. Здесь можно обойтись правкой представления и не надо лезть в само ядро ;)
17.06.2008 в 6:16 пп
Я только собираюсь всё это проделать, спасибо за инфу))) :!:
17.06.2008 в 6:18 пп
Единственное ПЛОХО, что нельзя править собственные-же комментарии :sad:
17.06.2008 в 10:56 пп
Да, плохо, что редактировать нельзя. Но писать такой модуль мне очень лень :)
12.02.2010 в 12:02 пп
К движкам лучше писать доп. модули. Править код ядра – только в крайнем случае… Да и с обновлением будут проблемы…