В WordPress по умолчанию URL страниц авторов имеют вид https://ваш-сайт.ru/author/имя_автора. Иногда возникает необходимость изменить эту структуру без применения плагинов — например, для улучшения SEO, удобства пользователей или под требования дизайна. В этой статье мы подробно рассмотрим, как изменить URL авторского архива собственными силами с помощью функций темы и правил перезаписи.
Почему стоит менять URL авторского блока WordPress
Стандартный URL /author/ не всегда отвечает требованиям проекта. Например, вы можете захотеть сделать URL короче, заменить слово "author" на более понятное для вашей аудитории, либо добавить префиксы, соответствующие тематике сайта. Кроме того, изменение URL помогает избежать конфликтов с другими типами записей и улучшить SEO за счёт более релевантных адресов.
При этом важно сделать перенаправления со старых URL на новые, чтобы не потерять трафик и позиции в поисковой выдаче.
Как изменить базу URL авторов с помощью add_rewrite_rule
Самый надёжный способ — использовать API WordPress для добавления правил перезаписи (rewrite rules). Для этого в файл functions.php вашей темы или в кастомный плагин добавьте следующий код:
function wppuzzle_change_author_base() {
global $wp_rewrite;
$wp_rewrite->author_base = 'profile'; // Заменяем 'author' на 'profile' или другую строку
$wp_rewrite->flush_rules(); // Сбрасываем правила перезаписи
}
add_action('init', 'wppuzzle_change_author_base');
В этом примере URL авторов изменится с /author/vasya на /profile/vasya. Чтобы изменения вступили в силу, после добавления кода зайдите в админке WordPress в Настройки → Постоянные ссылки и нажмите кнопку «Сохранить изменения», чтобы сбросить правила перезаписи.
Важно об использовании flush_rules()
Вызов flush_rules() — дорогая операция, поэтому её не рекомендуется выполнять на каждом запросе. В приведённом примере она вызывается при инициализации для удобства, но при разработке лучше вызывать один раз при активации темы или плагина.
Как сделать редиректы со старых URL авторов на новые
Чтобы сохранить SEO и избежать ошибок 404, нужно настроить перенаправления со старого адреса /author/username на новый /profile/username. Для этого добавьте следующий код в functions.php:
function wppuzzle_redirect_old_author_url() {
if (is_author() && strpos($_SERVER['REQUEST_URI'], '/author/') !== false) {
$author_nicename = get_query_var('author_name');
if ($author_nicename) {
wp_redirect(site_url('/profile/' . $author_nicename), 301);
exit;
}
}
}
add_action('template_redirect', 'wppuzzle_redirect_old_author_url');
Этот код ловит запросы к старым URL авторов и делает 301 редирект на новые адреса с префиксом /profile/.
Изменение URL авторов на более сложные варианты с поддиректориями
Если нужно сделать URL авторов с дополнительными сегментами, например, /team/member/имя_автора, можно использовать более продвинутые правила перезаписи:
function wppuzzle_custom_author_rewrite() {
add_rewrite_rule(
'^team/member/([^/]+)/?$',
'index.php?author_name=$matches[1]',
'top'
);
}
add_action('init', 'wppuzzle_custom_author_rewrite');
После добавления правила сбросьте постоянные ссылки через админку. Теперь URL https://ваш-сайт.ru/team/member/vasya будет показывать автора с никнеймом vasya.
Не забудьте реализовать и редиректы со старых URL, если необходимо.
Подводим итоги и рекомендации
- Для замены базового сегмента URL авторов меняйте значение
$wp_rewrite->author_baseв хукеinit. - Сброс правил перезаписи выполняйте через админку или один раз в коде при активации.
- Для нестандартных URL используйте
add_rewrite_ruleс указанием нужного шаблона. - Обязательно настраивайте редиректы со старых адресов на новые, чтобы сохранить SEO.
Дополнительные инструменты для работы с URL авторов и SEO
Если вы хотите облегчить работу с SEO и URL без ручного кода, можно рассмотреть плагины, которые поддерживают изменение базовых URL, например:
- Clearfy Pro — плагин для оптимизации сайта, включая SEO и управление URL.
- WPRemark — для управления отзывами и пользовательским контентом, иногда полезен для кастомизации страниц авторов.
Однако, если нужна максимальная гибкость и контроль — лучше делать всё через код, как описано выше.