Кастомизация WordPress: список авторов с помощью get_userdata

Зачем это нужно
WordPress по умолчанию предоставляет функции вроде the_author(), которые возвращают данные автора для текущей записи. Но на центральных страницах (например, на странице блога или в сайдбаре) часто нужен список всех авторов. Используя get_userdata() и get_avatar(), вы можете:
- получить bio (user_description) любого зарегистрированного пользователя;
- показать аватар по email независимо от контекста страницы;
- централизованно управлять биографиями через профиль пользователя.
Важно: перед правками сделайте резервную копию файлов темы и тестируйте в дочерней теме.
Что нужно подготовить
- Зайти в админку WordPress → Пользователи → Редактировать пользователя (Edit User).
- Для каждого автора записать email и user_id. В URL страницы редактирования вы увидите параметр user_id= (например: ?user_id=4).
- Желательно включить мини‑фото (Gravatar) и заполнить «Короткое описание» в профиле — это поле выводится как user_description.
Базовый пример (исходный код)
Ниже — минимальный фрагмент, который выводит аватар по email и описание из профиля пользователя по ID. Код сохранён в исходном виде PHP/HTML:
user_description . "\n"; ?>Как это работает:
- get_avatar() получает изображение аватара по e-mail — не зависит от текущего автора страницы;
- get_userdata($user_id) возвращает объект WP_User с множеством полей (ID, user_email, display_name, user_description и др.).
Пример: список авторов в сайдбаре
Ниже — более полный пример, где мы храним массив ID авторов и итерируем по нему. Код демонстрационный, адаптируйте под вашу тему и стили.
user_email;
$avatar = get_avatar($email, 64, '', $user->display_name);
$name = esc_html($user->display_name);
$bio = esc_html($user->user_description);
$profile_url = esc_url(get_author_posts_url($aid, $user->user_nicename));
echo "";
}
?>Советы безопасности и качества:
- используйте esc_html(), esc_attr(), esc_url() при выводе данных;
- кешируйте выдачу для производительности (transients или объектный кеш);
- учитывайте мобильные размеры аватаров и доступность (alt у изображений добавит get_avatar автоматически для Gravatar).
Какие поля можно читать через get_userdata
get_userdata($id) возвращает объект WP_User. Частые поля:
- ID — числовой идентификатор пользователя;
- user_email — e‑mail;
- display_name — отображаемое имя;
- user_nicename — удобный для URL ник;
- user_url — личный сайт;
- user_registered — дата регистрации;
- roles — массив ролей (editor, author и т.д.);
- user_description — поле «О себе» (bio).
1‑строчная подсказка: get_userdata возвращает объект с полями и методами WP_User для проверки прав.
Альтернативные подходы
- Использовать WP_User_Query, чтобы получить всех пользователей с ролью author: более масштабируемо для динамического списка.
- Хранить список авторов в опции или мета‑поле темы для простого управления в админке.
- Плагин «Team» или «Authors List» — если не хотите кодить.
Пример с WP_User_Query для всех авторов:
array('author','editor','administrator'), 'orderby' => 'display_name', 'order' => 'ASC');
$user_query = new WP_User_Query($args);
if (!empty($user_query->results)) {
foreach ($user_query->results as $user) {
// выводим как в примере выше
}
}
?>Когда этот подход не подходит (контрпримеры)
- Если вы хотите автоматически включать только тех людей, у кого есть опубликованные статьи — тогда лучше фильтровать по наличию записей (get_posts или WP_User_Query с meta_query).
- Если на сайте много пользователей (тысячи) — перебор всех ID без пагинации или кеша ударит по производительности.
Мини‑методология внедрения (шаги)
- Соберите ID и email авторов.
- Протестируйте get_userdata для одного профиля.
- Сверстайте макет авторского блока и адаптируйте стили.
- Добавьте защиту вывода (esc_*), кеширование и проверку существования полей.
- Тестируйте на мобильных и со слабой пропускной способностью.
Важно: не редактируйте файлы в родительской теме — используйте дочернюю тему (child theme).
Чеклист ролей (Developer / Editor / Admin)
- Developer:
- проверить корректность get_userdata и безопасность вывода;
- добавить кеш и предусмотреть пагинацию;
- сделать стили адаптивными.
- Editor:
- убедиться, что поле «Короткое описание» заполнено;
- обновить профиль при необходимости.
- Admin:
- при необходимости собрать список ID и email;
- назначить роли и права редактирования профиля.
Критерии приёмки
- Каждый автор в списке отображается с именем, аватаром и био;
- Ссылки на профиль/архив автора ведут корректно;
- Вывод корректен на мобильных устройствах;
- Нет SQL‑ошибок, страницы кешируются.
Тестовые случаи
- Пользователь без заполненного user_description — блок выводит заглушку или пропускается;
- Некорректный ID в списке — пропускается без фатальной ошибки;
- Большой список авторов — проверка времени отклика и кеша.
Маленькая галерея исключений
- Gravatar не настроен — аватар выводится стандартный (по умолчанию);
- Пользователь удалён — get_userdata вернёт null и нужно обработать этот сценарий.
Пример вывода в виде карточки (шаблон HTML)
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента