В WordPress стандартно можно изменить автора записи через админ-панель, но это неудобно при большом количестве постов или если нужно сделать это программно с определёнными условиями. В этой статье мы рассмотрим, как изменить автора опубликованного поста программно, используя функции WordPress и плагины для автоматизации.
Почему может понадобиться изменить автора поста после публикации
Сменить автора поста может понадобиться по разным причинам:
- Переход сотрудника на другую должность или увольнение;
- Объединение или разделение аккаунтов авторов;
- Автоматическая смена автора в зависимости от статуса или категории поста;
- Импорт записей с неправильными авторами и необходимость их корректировки.
Изменять автора вручную через админку неудобно и можно допустить ошибки, особенно если постов много. Программное решение позволяет автоматизировать процесс и создать гибкие условия.
Как изменить автора поста через функцию WordPress
Для смены автора в WordPress используется функция wp_update_post(), в которую передается ID записи и новый ID автора. Рассмотрим пример функции с префиксом домена wp1_:
function wp1_change_post_author($post_id, $new_author_id) {
// Проверяем, существует ли пост
$post = get_post($post_id);
if (!$post) {
return new WP_Error('post_not_found', 'Пост не найден');
}
// Обновляем автора
$updated_post = array(
'ID' => $post_id,
'post_author' => $new_author_id
);
$result = wp_update_post($updated_post, true);
if (is_wp_error($result)) {
return $result;
}
return true;
}Эта функция принимает ID поста и ID нового автора, проверяет существование поста и обновляет автора. Если произошла ошибка, возвращается объект WP_Error, иначе true.
Пример использования функции
Предположим, нужно сменить автора записи с ID 123 на пользователя с ID 5:
$result = wp1_change_post_author(123, 5);
if (is_wp_error($result)) {
echo 'Ошибка: ' . $result->get_error_message();
} else {
echo 'Автор успешно изменен';
}Массовая смена автора постов по условию
Если нужно изменить автора сразу для нескольких записей, например, для всех постов определённого автора или категории, можно использовать WP_Query для выборки и циклом обновить записи.
function wp1_mass_change_author($old_author_id, $new_author_id) {
$args = array(
'author' => $old_author_id,
'posts_per_page' => -1,
'post_type' => 'post',
'post_status' => 'publish'
);
$query = new WP_Query($args);
if (!$query->have_posts()) {
return 'Постов для смены не найдено';
}
while ($query->have_posts()) {
$query->the_post();
wp_update_post(array(
'ID' => get_the_ID(),
'post_author' => $new_author_id
));
}
wp_reset_postdata();
return 'Авторы постов успешно изменены';
}Вызываем функцию:
echo wp1_mass_change_author(3, 7);Этот код изменит автора для всех постов пользователя с ID 3 на пользователя с ID 7.
Использование плагинов для смены автора постов
Если вы не хотите писать код, существует несколько плагинов, которые позволяют изменить автора поста массово и удобно через интерфейс:
- Bulk Edit Author — простой плагин для массовой смены автора выбранных постов.
- Co-Authors Plus — позволяет назначить нескольких авторов, а также сменить основного автора.
- WP Bulk Post Author Change — мощный инструмент для изменения авторов с фильтрами по категориям и датам.
Все эти плагины доступны в репозитории WordPress и легко устанавливаются. Для автоматизации в рамках WPSHOP можно добавить вызовы функций из нашего кода в кастомные сценарии.
Как избежать проблем при смене автора
Несколько советов для правильной смены автора:
- Проверьте, что новый автор существует в базе пользователей WordPress. Иначе пойдет ошибка.
- Если у автора нет доступа к редактированию постов, он не сможет в дальнейшем их править. Учитывайте роли и права.
- При массовом обновлении делайте резервную копию базы данных.
- При смене автора, который связан с SEO (например, авторские страницы) — проверьте настройки SEO плагина.
Дополнительные возможности: автоматическая смена автора по категории
Иногда нужно, чтобы все посты в определённой категории автоматически сменили автора. Это можно сделать, повесив код на хук сохранения поста:
function wp1_change_author_by_category($post_id) {
// Проверка автосохранения
if (wp_is_post_autosave($post_id) || wp_is_post_revision($post_id)) {
return;
}
$categories = wp_get_post_categories($post_id);
$target_category_id = 10; // ID категории для смены автора
$new_author_id = 5; // ID нового автора
if (in_array($target_category_id, $categories)) {
wp_update_post(array(
'ID' => $post_id,
'post_author' => $new_author_id
));
}
}
add_action('save_post', 'wp1_change_author_by_category');Этот код при сохранении поста проверит, есть ли у него заданная категория, и если да — сменит автора.
Заключение
Смена автора опубликованного поста в WordPress — задача, которую можно решить как вручную, так и программно. Используя функции wp_update_post() и WP_Query, можно быстро и безопасно менять авторство как для одной записи, так и массово. Плагины помогут упростить задачу для пользователей без навыков программирования. Главное — соблюдать осторожность и делать бэкапы перед массовыми изменениями.
Если хотите подробнее узнать о продвинутых настройках и автоматизации в WordPress, рекомендуем ознакомиться с решениями на WPSHOP.ru.