Если не работает плагин nofollow-free

Как некоторые уже заметили, в рамках подготовки к годовщине существования этого блога была изменена тема WordPress. Я искал простую, минималистичную тему с двумя колонками. Данная тема inove мне приглянулась. Однако, я увидел, что несмотря на поддержку виджетов, некоторые плагины в этой теме не работают. Например, dofollow плагин nofollow-free. Вообще, оказалось, что ссылки на сайты любых комментаторов становятся сразу dofollow. Пришлось немного поковырять php код темы и понять что же делает плагин nofollow-free.

Итак, для начала смотрим код плагина и видим, что он работает, если вызывается функция get_comment_author_link(). Эта функция возвращает не просто адрес сайта, а уже кусок html кода с ссылкой на сайт комментатора и правильным rel=”external nofollow” или же просто rel=”external” (при соответствующих настройках плагина эта функция возвращает также и число комментариев автора). Так вот, новая тема inove просто не использует эту стандартную функцию, а имеет свой способ вывода комментариев. Правила отображения комментариев находятся в разделе Функции темы
(functions.php). Ближе к концу этого файла Вы найдете строки:

// custom comments
function custom_comments($comment, $args, $depth)

Это начало нужной нам функции. А вот строка, которая ответственна за ссылку на сайт комментатора:

<?php if (get_comment_author_url()) : ?>
<a id="commentauthor-<?php comment_ID() ?>” href="<?php comment_author_url() ?>”>

Как видно, если ее изменить таким образом, что бы стало:

<?php if (get_comment_author_url()) : ?>
<a rel=”external nofollow” id=”commentauthor-<?php comment_ID() ?>” href="<?php comment_author_url() ?>”>

то ссылки на сайты комментаторов будут все с nofollow. Не зависимо от наличия плагина nofollow-free.

Но как в этом случае заставить работать nofollow-free? Я нашел следующий дуболомный выход из ситуации. Нужно вызвать функцию get_comment_author_link() и проверить, содержится ли в том, что она возвращает строка “nofollow” или нет. Если эта строка есть, то мы присвоим переменной $nff значение ‘external nofollow’, в противном случае присвоим $nff значение ‘external’. И затем просто выведем $nff в нужном месте. Вот что получилось:

<?php
// — dofollow
if (strpos(get_comment_author_link(), “nofollow”)) {
$nff=’external nofollow’;
}
else
{
$nff=’external’;
} ?>
<?php if (get_comment_author_url()) : ?>
<a rel=”<?php echo $nff; ?>” id=”commentauthor-<?php comment_ID() ?>” href=”<?php comment_author_url() ?>”>

И все, теперь dofollow плагин работает.

Поделиться:      twitter       facebook