В стандартной установке WordPress каждый пост имеет автора — владельца, который указан при создании записи. Но иногда возникает задача изменить владельца поста массово, назначить автора программно или добавить возможность выбора автора в пользовательских интерфейсах. В этой статье мы подробно разберем, как работать с владельцем постов в WordPress, используя как готовые плагины, так и собственный код.
Основы работы с автором поста в WordPress
Каждый пост в WordPress хранит ID автора в поле post_author таблицы базы данных wp_posts. При создании записи автором становится текущий пользователь. Изменить автора можно через административную панель, если включена соответствующая опция, или программно.
Для работы с автором в коде WordPress предоставляет удобные функции:
get_post_field('post_author', $post_id)— получить ID автора поста;wp_update_post(['ID' => $post_id, 'post_author' => $new_author_id])— обновить автора поста;get_userdata($user_id)— получить данные пользователя по ID.
Важно, что для изменения автора текущий пользователь должен иметь права редактирования поста и права на назначение автора, обычно это роль администратора или редактора.
Как добавить выбор автора в кастомных формах и шорткодах
Если вы создаете пользовательскую форму для создания или редактирования постов на фронтенде, логично добавить возможность выбора автора. Рассмотрим пример функции, которая выводит выпадающий список авторов и сохраняет выбранного автора при создании поста.
function wpfaq_render_author_select($selected_author = 0) {
$users = get_users(['who' => 'authors']);
echo '<select name="post_author">';
foreach ($users as $user) {
$selected = ($user->ID == $selected_author) ? ' selected' : '';
echo "<option value=\"{$user->ID}\" $selected>{$user->display_name}</option>";
}
echo '</select>';
}
function wpfaq_save_post_with_author() {
if (!empty($_POST['post_author']) && current_user_can('edit_posts')) {
$new_author = intval($_POST['post_author']);
$post_id = wpfaq_create_post_somehow(); // Ваша логика создания поста
if ($post_id) {
wp_update_post(['ID' => $post_id, 'post_author' => $new_author]);
}
}
}Такой подход позволяет гибко управлять авторством при создании контента с пользовательских форм.
Массовое изменение автора постов через плагин и код
Иногда требуется массово изменить автора множества постов, например, при смене редактора или объединении учетных записей. Плагины для этого есть, например, Author Change. Но можно сделать и быстро через код:
function wpfaq_bulk_change_post_author($old_author_id, $new_author_id) {
global $wpdb;
$wpdb->query($wpdb->prepare(
"UPDATE {$wpdb->posts} SET post_author = %d WHERE post_author = %d",
$new_author_id,
$old_author_id
));
}Этот код напрямую обновит всех авторов с $old_author_id на $new_author_id без лишних проверок. Используйте с осторожностью и обязательно сделайте резервную копию базы данных.
Расширение функционала: добавление роли "Автор" с ограниченными правами
Для сайтов с множеством пользователей и разными уровнями доступа полезно создавать кастомные роли. Например, роль "Автор" может иметь права создавать и редактировать только свои посты, но не менять авторство. Для создания роли используйте функцию add_role:
function wpfaq_add_custom_author_role() {
add_role('custom_author', 'Автор с ограничениями', [
'read' => true,
'edit_posts' => true,
'edit_others_posts' => false,
'publish_posts' => true,
'delete_posts' => true
]);
}
add_action('init', 'wpfaq_add_custom_author_role');Это позволит разграничить права и предотвратить неправильное назначение авторов.
Использование плагина Clearfy для управления авторами и оптимизации
Плагин Clearfy Pro от WPSHOP содержит множество функций для оптимизации WordPress, в том числе и возможности управлять ролями и ограничивать права пользователей. Он поможет упростить настройку прав авторов без глубоких знаний кода.
Выводы и рекомендации
Управление владельцем (автором) постов — важный аспект, особенно для крупных сайтов с несколькими редакторами. Используйте встроенные функции WordPress для изменения автора программно, добавляйте выбор автора в пользовательские формы и применяйте массовое обновление через запросы к базе для быстрого изменения. Для удобства и безопасности применяйте проверенные плагины, такие как Author Change и Clearfy Pro.
Таким образом вы получите полный контроль над авторством записей и сможете гибко настраивать работу редакторов и авторов на вашем сайте.