В WordPress каждая запись имеет автора, но иногда стандартного отображения информации об авторе недостаточно. В этой статье мы подробно разберем, как добавить владельца записи (автора) в разные части сайта, а также как расширить функционал для удобного управления авторами.
Почему важно управлять владельцем записи в WordPress
Автор записи помогает понять, кто создал контент, и может быть полезен как для пользователей сайта, так и для администраторов. Особенно если на сайте несколько авторов, важно корректно отображать и фильтровать записи по владельцам. В стандартном WordPress есть базовые возможности, но часто их недостаточно для сложных проектов.
Добавление и кастомизация владельца записи позволяют:
- Отображать подробную информацию об авторе в шаблонах;
- Создавать фильтры по авторам для удобства навигации;
- Расширять функционал с помощью пользовательских полей и мета-данных;
- Улучшают SEO и взаимодействие с аудиторией.
Отображение автора записи в шаблоне WordPress: базовый пример
Чтобы вывести имя автора в шаблоне записи, используйте функцию the_author() или get_the_author(). Например, в файле single.php:
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<h1><?php the_title(); ?></h1>
<p>Автор: <?php the_author(); ?></p>
<div><?php the_content(); ?></div>
<?php endwhile; endif; ?>Этот способ подходит для большинства случаев, но если нужно более гибко контролировать вывод, лучше использовать функции WordPress API.
Создание кастомного поля для владельца записи и его вывод
Иногда нужно добавить дополнительную информацию об авторе или владельце записи, отличающуюся от стандартного пользователя WordPress. Для этого можно использовать кастомные поля (custom fields).
Чтобы добавить кастомное поле вручную:
- При редактировании записи включите отображение мета-бокса "Произвольные поля" в настройках экрана.
- Добавьте новое поле, например,
wpwebsite_owner, и введите значение — имя владельца.
Для вывода значения этого поля в шаблоне используйте:
<?php
echo 'Владелец записи: ' . esc_html(get_post_meta(get_the_ID(), 'wpwebsite_owner', true));
?>Этот способ удобен, если владелец записи не совпадает с пользователем WordPress или нужно хранить дополнительную информацию.
Автоматическое сохранение владельца записи при создании
Чтобы автоматически проставлять владельца записи при создании, можно использовать хук save_post. Пример функции для wpwebsite.ru:
function wpwebsite_save_owner_meta($post_id) {
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) return;
if (!current_user_can('edit_post', $post_id)) return;
if (isset($_POST['wpwebsite_owner'])) {
update_post_meta($post_id, 'wpwebsite_owner', sanitize_text_field($_POST['wpwebsite_owner']));
}
}
add_action('save_post', 'wpwebsite_save_owner_meta');Чтобы это работало, нужно добавить поле ввода на страницу редактирования записи. Добавим мета-бокс:
function wpwebsite_add_owner_meta_box() {
add_meta_box('wpwebsite_owner_box', 'Владелец записи', 'wpwebsite_owner_meta_box_html', 'post', 'side');
}
add_action('add_meta_boxes', 'wpwebsite_add_owner_meta_box');
function wpwebsite_owner_meta_box_html($post) {
$value = get_post_meta($post->ID, 'wpwebsite_owner', true);
echo '<label for="wpwebsite_owner_field">Имя владельца:</label>';
echo '<input type="text" id="wpwebsite_owner_field" name="wpwebsite_owner" value="'.esc_attr($value).'" size="25" />';
}Теперь при создании или редактировании записи можно указывать владельца вручную.
Использование плагинов для управления владельцами записей
Если не хочется писать код, можно использовать готовые плагины:
- Co-Authors Plus — позволяет назначать несколько авторов на одну запись, что полезно для совместных проектов.
- WP User Manager — расширяет возможности управления пользователями и их контентом.
- Advanced Custom Fields (ACF) — помогает создавать удобные пользовательские поля, в том числе для владельцев записи.
Например, с Co-Authors Plus можно добавить соавторов и вывести их имена в шаблоне так:
if (function_exists('coauthors')) {
coauthors();
} else {
the_author();
}Фильтрация записей по владельцу
Для удобства пользователей полезно реализовать фильтрацию записей по владельцу. Если используете кастомное поле, можно добавить параметр в WP_Query:
$args = [
'post_type' => 'post',
'meta_key' => 'wpwebsite_owner',
'meta_value' => 'Иван Иванов',
];
$query = new WP_Query($args);
if ($query->have_posts()) {
while ($query->have_posts()) {
$query->the_post();
// вывод записи
}
wp_reset_postdata();
}Если используете стандартных авторов WordPress, фильтрация осуществляется через параметр author:
$args = [
'author' => 5, // ID автора
'post_type' => 'post',
];Вывод информации об авторе: расширенные данные и кастомные шаблоны
Для улучшенного отображения информации об авторе можно создать кастомный шаблон, который будет показывать:
- Фото автора;
- Биографию;
- Ссылки на соцсети;
- Список других статей автора.
Пример вывода биографии и аватара:
<div class="wpwebsite-author-box">
<div class="wpwebsite-author-avatar"><?php echo get_avatar(get_the_author_meta('ID'), 96); ?></div>
<h3><?php the_author(); ?></h3>
<p><?php the_author_meta('description'); ?></p>
</div>Чтобы вывести список статей автора, используйте:
$author_id = get_the_author_meta('ID');
$author_posts = new WP_Query([
'author' => $author_id,
'posts_per_page' => 5
]);
if ($author_posts->have_posts()) {
echo '<ul>';
while ($author_posts->have_posts()) {
$author_posts->the_post();
echo '<li><a href="'.get_permalink().'">'.get_the_title().'</a></li>';
}
echo '</ul>';
wp_reset_postdata();
}