На небольших и средних сайтах часто есть один технический или редакционный аккаунт, которому не нужен публичный архив автора. Типичный пример — /author/admin/ или страница гостевого аккаунта, которая дублирует контент, не несёт пользы и иногда попадает в индекс. При этом отключать архивы авторов целиком нельзя: у других редакторов они могут быть полезны для навигации и SEO.
Задача здесь точечная: убрать архив только у одного пользователя, вернуть 404 или редирект на безопасную страницу и не сломать шаблоны темы, хлебные крошки и внутренние ссылки.
Когда это действительно нужно
Сценарий обычно один из трёх:
- у сайта есть один служебный автор, и его архив дублирует главную или страницу «Об авторе»;
- в архиве автора нет смысла, потому что записи публикуются от имени бренда, а не конкретного человека;
- нужно закрыть старый профиль после миграции контента на новый аккаунт.
Если у вас проблема не в одном пользователе, а в самих архивных страницах авторов как классе, это уже другая задача. Здесь мы работаем точечно и без побочных эффектов.
Диагностика: что именно сейчас открывается
Перед изменениями проверьте, как ведёт себя архив нужного пользователя:
- Откройте URL вида
/author/username/. - Посмотрите, есть ли там записи, пагинация, canonical и индексируемый заголовок.
- Проверьте, не строит ли тема хлебные крошки на этот архив.
- Если на странице стоит SEO-плагин, посмотрите, не переопределяет ли он robots meta.
Важно понять, нужен ли вам 404, 301-редирект или просто скрытие ссылки. Для служебного автора чаще всего подходит редирект на главную, страницу команды или 404 — в зависимости от логики сайта.
Подходы: код, плагин или правка шаблона
| Способ | Когда подходит | Минус |
|---|---|---|
Код в functions.php или мини-плагине | Нужно отключить архив только у одного пользователя | Требует аккуратной проверки темы и редиректов |
| SEO-плагин | Нужно лишь закрыть страницу от индексации, но оставить доступной | Архив остаётся доступным для людей и ботов |
| Правка шаблона автора | Нужно изменить внешний вид, а не поведение URL | Не решает задачу удаления архива |
Если цель именно убрать страницу из публичного доступа, правка шаблона не поможет. Нужен код на уровне запроса.
Пошаговое решение через template_redirect
Самый практичный вариант — перехватить запрос к архиву автора и отдать 404 или редирект. Ниже пример для одного конкретного пользователя по user_nicename или ID.
<?php
add_action( 'template_redirect', function () {
if ( ! is_author() ) {
return;
}
$author = get_queried_object();
if ( ! $author || empty( $author->user_login ) ) {
return;
}
// Замените на нужный логин автора.
if ( 'admin' !== $author->user_login ) {
return;
}
// Вариант 1: отдать 404.
global $wp_query;
$wp_query->set_404();
status_header( 404 );
nocache_headers();
include get_query_template( '404' );
exit;
} );Если вместо 404 нужен редирект, замените блок с 404 на безопасный wp_safe_redirect():
<?php
add_action( 'template_redirect', function () {
if ( ! is_author() ) {
return;
}
$author = get_queried_object();
if ( ! $author || empty( $author->user_login ) ) {
return;
}
if ( 'admin' !== $author->user_login ) {
return;
}
wp_safe_redirect( home_url( '/' ), 301 );
exit;
} );Если архив нужно отключить по ID пользователя, логика ещё проще и не зависит от изменения логина:
<?php
add_action( 'template_redirect', function () {
if ( ! is_author() ) {
return;
}
$author_id = (int) get_query_var( 'author' );
if ( 12 !== $author_id ) {
return;
}
wp_safe_redirect( home_url( '/about/' ), 301 );
exit;
} );Куда лучше вставлять код
Для боевого сайта лучше не класть такой код прямо в functions.php активной темы. Практичнее вынести его в небольшой mu-plugin или отдельный мини-плагин. Тогда логика не исчезнет после смены темы.
Минимальный каркас плагина выглядит так:
<?php
/**
* Plugin Name: Disable Author Archive for One User
*/
add_action( 'template_redirect', function () {
if ( ! is_author() ) {
return;
}
$author = get_queried_object();
if ( ! $author || empty( $author->user_login ) ) {
return;
}
if ( 'admin' !== $author->user_login ) {
return;
}
wp_safe_redirect( home_url( '/team/' ), 301 );
exit;
} );Если нужно не отключить, а скрыть ссылку на автора
Иногда архив не нужен только визуально: страница может оставаться доступной, но ссылка на автора в карточках и метаданных мешает. Тогда правят шаблон вывода записи. Например, в теме может быть функция, которая печатает автора в мета-блоке. Логика обычно сводится к проверке пользователя и условному выводу ссылки.
<?php
$author_id = (int) get_the_author_meta( 'ID' );
if ( 12 !== $author_id ) {
printf(
'<a href="%s">%s</a>',
esc_url( get_author_posts_url( $author_id ) ),
esc_html( get_the_author() )
);
} else {
echo esc_html( get_the_author() );
}Этот вариант полезен, если вы не хотите менять поведение URL, но хотите убрать ссылку из интерфейса. Для SEO-целей он слабее, чем 404 или редирект.
Проверка результата после внедрения
После правки проверьте не только сам URL, но и сопутствующие сигналы:
- архив нужного автора отдаёт 404 или 301, как задумано;
- страница не открывается в браузере без авторизации;
- в
view-source:нет старого canonical на этот архив; - в хлебных крошках не осталась ссылка на отключённый архив;
- внутренние ссылки на автора не ведут в тупик, если вы выбрали 404;
- в логах сервера нет бесконечных цепочек редиректов.
Быстрая проверка через консоль:
curl -I https://example.com/author/admin/Ожидаемый результат зависит от выбранной схемы: либо HTTP/1.1 404 Not Found, либо 301 Moved Permanently с корректным Location.
Частые ошибки и как их исправить
Редирект сделан через wp_redirect() без проверки URL
Это частая причина некорректных переходов и проблем с безопасностью. Для внутренних переходов используйте wp_safe_redirect(), а не произвольную строку из запроса.
Код срабатывает на всех авторах
Так бывает, если забыли условие по логину или ID. В итоге ломается весь раздел авторов, хотя отключить нужно было только одного пользователя. Проверьте, что условие сравнивает именно целевой аккаунт.
Оставили архив доступным, но закрыли его только в robots.txt
Это не удаление страницы. Поисковик может продолжать видеть URL через внешние ссылки, а пользователи — открывать его напрямую. Если архив не нужен, лучше отдать 404 или 301.
Редирект ведёт на страницу, которая сама редиректит обратно
Такой цикл легко получить, если отправить автора на URL, где в теме или плагине уже есть похожее правило. После внедрения обязательно проверьте цепочку редиректов.
Забыли про кэш
Если на сайте включён page cache, старая версия архива может ещё какое-то время отдаваться из кэша. Очистите кэш плагина, серверный кэш и CDN, если он используется.
Что учесть для безопасности и производительности
Само правило лёгкое, но лучше не плодить лишнюю логику в теме. Если таких точечных исключений несколько, вынесите их в отдельный mu-plugin и храните список пользователей в одном месте. Это проще сопровождать и безопаснее при обновлениях темы.
Если на сайте много авторов и вы хотите отключать архивы по роли, не делайте это вслепую. У роли administrator и editor могут быть разные сценарии публикации, а у гостевых аккаунтов — отдельные шаблоны. Сначала проверьте, какие архивы реально используются в навигации и поиске по сайту.
Когда задача шире и нужно одновременно убрать дубли, архивы и лишние технические страницы, имеет смысл смотреть на инструменты уровня Clearfy Pro: там есть набор настроек для чистки WordPress и управления дублями. Но для одного автора код обычно надёжнее и прозрачнее.
Если подойти к задаче аккуратно, вы получите ровно то поведение, которое нужно: один архив скрыт или перенаправлен, остальные авторские страницы работают как прежде, а сайт не теряет полезную структуру.