Хук get_comment_author_link
позволяет изменять ссылку на сайт комментатора, возвращаемую функцией get_comment_author_link()
. Этот фильтр полезен, когда необходимо модифицировать HTML-код ссылки, например, чтобы добавить специальные атрибуты, изменить URL или создать альтернативные ссылки для различных сценариев.
apply_filters( 'get_comment_author_link', string $comment_author_link, string $comment_author, string $comment_id )
$comment_author_link
(string) — HTML-код ссылки автора комментария. Пустая строка, если URL некорректен.$comment_author
(string) — Имя автора комментария.$comment_id
(string) — ID комментария в виде строки.
Использование
Чтобы использовать хук get_comment_author_link
, нужно подключить свою функцию к фильтру с помощью add_filter
. В примере ниже подключается функция my_custom_comment_author_link
, которая будет обрабатывать ссылку автора:
add_filter( 'get_comment_author_link', 'my_custom_comment_author_link', 10, 3 );
function my_custom_comment_author_link( $comment_author_link, $comment_author, $comment_id ) {
// Применяем изменения к ссылке автора комментария
return $comment_author_link;
}
Пример #1: Открытие ссылки автора в новой вкладке
Часто нужно, чтобы ссылка на сайт комментатора открывалась в новой вкладке, чтобы посетители не покидали ваш сайт. Давайте добавим атрибут target="_blank"
к ссылке.
add_filter( 'get_comment_author_link', 'add_target_blank_to_comment_author_link', 10, 3 );
function add_target_blank_to_comment_author_link( $comment_author_link, $comment_author, $comment_id ) {
$comment_author_link = str_replace( 'external nofollow', 'external nofollow noreferrer" target="_blank', $comment_author_link );
return $comment_author_link;
}
В этом примере мы добавляем атрибут target="_blank"
с помощью замены текста в HTML-коде ссылки, что позволяет открывать сайт автора в новом окне браузера.
Пример #2: Ссылка на архив записей автора
Если комментатор является зарегистрированным пользователем сайта, можно сделать ссылку на архив его записей вместо указанного им URL. Это полезно на сайтах с активными сообществами, где пользователи могут оставлять комментарии.
add_filter( 'get_comment_author_link', 'link_comment_to_author_posts_archive', 10, 3 );
function link_comment_to_author_posts_archive( $comment_author_link, $comment_author, $comment_id ) {
$comment = get_comment( $comment_id );
// Проверим, зарегистрирован ли комментатор и есть ли у него ID пользователя
if ( ! empty( $comment->user_id ) ) {
$comment_author_link = sprintf(
'<a href="%s" rel="external nofollow" class="url">%s</a>',
esc_url( get_author_posts_url( $comment->user_id ) ),
esc_html( $comment_author )
);
}
return $comment_author_link;
}
Этот код проверяет, зарегистрирован ли комментатор, и если да, создает ссылку на архив его записей на сайте. Если комментатор не зарегистрирован, возвращается обычная ссылка.
Пример #3: Замена ссылки для неавторизованных комментаторов
В некоторых случаях для комментаторов, которые не вошли в систему, стоит заменять их ссылки на страницу профиля или другую целевую страницу. Ниже представлено, как это сделать:
add_filter( 'get_comment_author_link', 'replace_comment_author_link_for_guests', 10, 3 );
function replace_comment_author_link_for_guests( $comment_author_link, $comment_author, $comment_id ) {
$comment = get_comment( $comment_id );
// Если комментатор не авторизован, заменим ссылку
if ( empty( $comment->user_id ) ) {
$comment_author_link = sprintf(
'<a href="%s" rel="nofollow" class="guest-profile">%s</a>',
esc_url( site_url( '/guest-profile' ) ),
esc_html( $comment_author )
);
}
return $comment_author_link;
}
В этом примере для неавторизованных пользователей создается ссылка на специальную страницу профиля гостя, что может быть полезно для анализа и структурирования комментариев.
Заключение
Хук get_comment_author_link
в WordPress позволяет гибко изменять ссылки на авторов комментариев. С его помощью можно улучшить удобство навигации для пользователей, добавляя ссылки на архивы записей авторов или создавая индивидуальные ссылки для различных групп пользователей.