В стандартной теме WordPress в блоке автора (author box) ссылка на профиль автора ведет на страницу архивов записей этого автора. Иногда возникает задача изменить этот URL — например, направить ссылку на персональный сайт автора, страницу в соцсетях или на кастомный профиль. В этой статье подробно разберем, как это сделать без использования плагинов, только с помощью кода в functions.php или собственном плагине.
Что такое авторский блок и зачем менять URL ссылки
Авторский блок — это элемент, который часто выводится под постом и содержит имя автора, его аватар и ссылку на архив его записей. По умолчанию WordPress формирует URL архива автора с помощью функции get_author_posts_url(). Однако иногда стандартный URL неудобен или не соответствует требованиям сайта:
- Нужно направить посетителей на персональный сайт автора.
- Хотим заменить ссылку на социальные сети.
- В компании есть единая страница профилей, и нужно вести туда.
Изменение URL повысит удобство навигации и улучшит пользовательский опыт.
Как изменить URL ссылки в авторском блоке через фильтр WordPress
Самый простой и правильный способ — использовать фильтр author_link. Он позволяет перехватить формируемый URL и заменить его на любой другой.
Пример функции для изменения ссылки на сайт, указанный в пользовательском поле user_url_custom:
function wpdigest_change_author_url($link, $author_id, $author_nicename) {
$custom_url = get_user_meta($author_id, 'user_url_custom', true);
if (!empty($custom_url)) {
return esc_url($custom_url);
}
return $link;
}
add_filter('author_link', 'wpdigest_change_author_url', 10, 3);
Здесь мы получаем дополнительное поле пользователя и если оно заполнено — заменяем стандартную ссылку. Это дает гибкость для каждого автора задавать свой URL.
Как добавить пользовательское поле для URL автора
Чтобы авторы могли указывать свой сайт в админке, добавим поле на страницу профиля:
function wpdigest_show_custom_user_profile($user) {
?>
<h3>Дополнительный URL автора</h3>
<table class="form-table">
<tr>
<th><label for="user_url_custom">Персональный сайт</label></th>
<td>
<input type="text" name="user_url_custom" id="user_url_custom" value="<?php echo esc_attr(get_the_author_meta('user_url_custom', $user->ID)); ?>" class="regular-text" /><br />
<span class="description">Введите URL сайта или профиля соцсети.</span>
</td>
</tr>
</table>
<?php
}
add_action('show_user_profile', 'wpdigest_show_custom_user_profile');
add_action('edit_user_profile', 'wpdigest_show_custom_user_profile');
function wpdigest_save_custom_user_profile($user_id) {
if (!current_user_can('edit_user', $user_id)) {
return false;
}
update_user_meta($user_id, 'user_url_custom', esc_url_raw($_POST['user_url_custom']));
}
add_action('personal_options_update', 'wpdigest_save_custom_user_profile');
add_action('edit_user_profile_update', 'wpdigest_save_custom_user_profile');
Теперь в админке у каждого пользователя появится поле для указания кастомного URL, который будет использоваться в авторском блоке.
Изменение URL при использовании темы с авторским блоком
Если тема выводит авторский блок напрямую, иногда нужно модифицировать шаблоны. Например, найти вызов get_author_posts_url() или the_author_posts_link() и заменить их на вызов кастомной функции:
function wpdigest_get_custom_author_link($author_id) {
$custom_url = get_user_meta($author_id, 'user_url_custom', true);
if (!empty($custom_url)) {
return esc_url($custom_url);
}
return get_author_posts_url($author_id);
}
В шаблоне:
<a href="<?php echo wpdigest_get_custom_author_link(get_the_author_meta('ID')); ?>"><?php the_author(); ?></a>
Так вы точно контролируете ссылку, которую видит пользователь.
Пример использования плагина Clearfy для управления ссылками авторов
Плагин Clearfy позволяет оптимизировать и настраивать множество аспектов WordPress, включая управление ссылками авторов. Хотя он не меняет URL авторов напрямую, его функции очистки и оптимизации помогут избежать конфликтов и улучшить работу кастомных решений.
Советы и рекомендации по безопасности и SEO
При изменении URL автора важно учитывать:
- Проверяйте корректность URL с помощью
esc_url()иesc_url_raw(). - Используйте rel="noopener noreferrer" для внешних ссылок в шаблоне.
- Если меняете ссылку на внешние сайты, убедитесь, что это не приведет к SEO-проблемам или потере веса ссылок.
- Кэшируйте результат, если на сайте большой трафик, чтобы не перегружать базу запросами к метаданным.
Итог: как сделать изменение URL в авторском блоке максимально гибким
Подводя итог, рекомендуем использовать фильтр author_link для динамической замены URL на основе пользовательских данных. Добавьте поле в профиль автора и выводите кастомный URL во всех местах, где есть ссылка на автора. Это универсальное и безопасное решение, которое не требует тяжелых плагинов и легко поддерживается.
Если нужна дополнительная функциональность — например, массовое управление или интеграция с соцсетями — можно подключить плагины из WPShop, которые дополнят этот базовый функционал.