Хук 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 позволяет гибко изменять ссылки на авторов комментариев. С его помощью можно улучшить удобство навигации для пользователей, добавляя ссылки на архивы записей авторов или создавая индивидуальные ссылки для различных групп пользователей.
