Иногда при разработке сайта на WordPress возникает необходимость изменить отображаемое имя автора поста без изменения самого пользователя или создания новых аккаунтов. Например, нужно показывать псевдонимы, сокращённые имена или комбинировать имя и фамилию по-особенному. В этой статье рассмотрим, как это сделать с помощью кода, без установки дополнительных плагинов, используя фильтры WordPress.
Почему стандартные настройки имени автора могут не подходить
По умолчанию WordPress для отображения имени автора использует поле display_name пользователя. Однако бывают ситуации, когда:
- Нужно скрыть реальные имена пользователей;
- Отображать псевдонимы, отличные от тех, что заданы в профиле;
- Использовать динамические имена авторов в зависимости от условий (например, для гостевых постов);
- Автоматически подставлять альтернативные имена при выводе записей.
В этих случаях стандартных настроек WordPress недостаточно, и приходится применять программные методы.
Используем фильтр wpboot_get_the_author_display_name для изменения имени автора
Чтобы изменить имя автора без правки базы, можно воспользоваться фильтром the_author или get_the_author_display_name. Предлагаю создать собственную функцию с префиксом wpboot_ для лучшей читаемости и интеграции с вашим сайтом.
Пример функции для переопределения отображаемого имени автора:
function wpboot_get_custom_author_name($display_name, $user_id) {
// Получаем данные пользователя
$user_info = get_userdata($user_id);
if (!$user_info) {
return $display_name; // если пользователь не найден, возвращаем исходное имя
}
// Пример: заменяем имя автора на псевдоним из user meta 'wpboot_author_nickname'
$custom_nickname = get_user_meta($user_id, 'wpboot_author_nickname', true);
if (!empty($custom_nickname)) {
return $custom_nickname; // если псевдоним задан, используем его
}
// Если нет псевдонима, возвращаем стандартное имя
return $display_name;
}
add_filter('the_author', 'wpboot_get_custom_author_name', 10, 2);Объяснение кода
Функция wpboot_get_custom_author_name получает оригинальное отображаемое имя и ID пользователя. Она проверяет, есть ли для пользователя мета-данные с ключом wpboot_author_nickname, и если да, то возвращает его вместо стандартного имени. Если мета-данных нет, возвращается исходное имя.
Такой подход позволяет гибко управлять отображением имён без изменения профиля пользователя.
Как добавить и использовать пользовательский псевдоним
Чтобы задать псевдоним, можно вручную добавить мета-значение для пользователя через админку или программно. Например, добавим псевдоним для пользователя с ID 2:
update_user_meta(2, 'wpboot_author_nickname', 'SuperAuthor');Теперь при выводе автора у постов, написанных пользователем с ID 2, будет отображаться SuperAuthor.
Автоматическое добавление псевдонима при регистрации
Если хотите автоматически задавать псевдонимы, можно использовать хук регистрации пользователя:
function wpboot_set_default_author_nickname($user_id) {
$user_info = get_userdata($user_id);
if ($user_info) {
$default_nickname = $user_info->user_login . '_wpboot';
update_user_meta($user_id, 'wpboot_author_nickname', $default_nickname);
}
}
add_action('user_register', 'wpboot_set_default_author_nickname');Это создаст псевдоним на основе логина пользователя с суффиксом _wpboot.
Как применять изменённое имя автора в шаблонах WordPress
Чтобы выводить изменённое имя автора в шаблонах, используйте стандартные функции:
the_author()— выводит имя автора текущего поста;get_the_author()— возвращает имя автора текущего поста;get_the_author_meta('display_name', $author_id)— получает имя автора по ID.
Благодаря добавленному фильтру эти функции будут автоматически возвращать изменённое имя.
Пример в шаблоне single.php:
<?php the_author(); ?>Дополнительные варианты кастомизации имени автора
Можно расширять функцию и добавлять более сложную логику, например:
- Отображать разные имена для разных типов постов;
- Использовать дополнительные поля профиля;
- Выводить имя с ссылкой на социальные сети;
- В зависимости от даты публикации менять имя автора.
Пример с условием для кастомного типа поста:
function wpboot_get_custom_author_name($display_name, $user_id) {
global $post;
if ($post && get_post_type($post) === 'custom_post_type') {
return 'Автор: ' . $display_name;
}
return $display_name;
}
add_filter('the_author', 'wpboot_get_custom_author_name', 10, 2);Используем плагины для управления авторами (опционально)
Если хотите более удобный интерфейс без кода, обратите внимание на плагины:
- Co-Authors Plus — позволяет назначать нескольких авторов для поста;
- Clearfy Pro — плагин для оптимизации и настройки сайта, включая расширенные возможности по управлению авторами.
Но если нужна легковесная кастомизация — кодовый подход из статьи предпочтительнее.
Заключение
Изменение имени автора поста в WordPress программно — простая и полезная задача, которая позволяет гибко управлять отображением информации без создания новых пользователей и установки лишних плагинов. Используйте фильтр the_author или get_the_author_display_name и храните кастомные имена в user meta. Приведённые примеры кода легко адаптируются под любые задачи и помогают улучшить пользовательский опыт на сайте.