Как изменить автора опубликованного поста в WordPress программно

В 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.

Автоматическое удаление неактивных пользователей WooCommerce: практическое руководство
17.04.2026
Как удалить незаконченные заказы WooCommerce по дате и статусу
19.05.2026
Custom Post Types в WordPress: практическое руководство по созданию и использованию
10.11.2025
Как создать автоматический бэкап WordPress: практическое руководство
28.11.2025
Как отключить автоматическое отображение вариантов товаров WooCommerce
03.06.2026