В WordPress часто возникает задача изменить автора уже опубликованной записи или полностью удалить информацию об авторе. Причины могут быть разные: смена автора контента, необходимость обезличить запись или исправление ошибок в данных пользователей. В этой статье мы подробно разберём, как без использования плагинов изменить или удалить автора в существующих записях.
Почему стоит изменить или удалить автора записи вручную через код
Многие пользователи, особенно новички, ищут плагин для решения этой задачи. Однако использование плагинов не всегда оправдано: они могут замедлять сайт, создавать конфликты или иметь избыточный функционал. Гораздо эффективнее и надёжнее реализовать нужное через код, особенно если таких записей немного или вы хотите автоматизировать процесс.
Кроме того, при ручном подходе вы получаете полный контроль над процессом и можете адаптировать его под свои конкретные задачи, будь то массовое изменение автора по условиям, удаление автора или смена на системного пользователя.
Изменение автора записи через wp-admin: стандартный способ
Для одиночных записей самый простой способ — изменить автора через административную панель WordPress:
- Откройте запись в режиме редактирования.
- В правой боковой панели найдите метабокс «Автор».
- Выберите нового автора из списка пользователей.
- Сохраните изменения.
Однако этот метод неудобен при массовом редактировании, а также если автор не отображается в метабоксе (например, если у пользователя нет прав).
Изменение или удаление автора старых записей через код — пример функции
Рассмотрим, как написать функцию для массового изменения автора. Предположим, вы хотите заменить автора с ID 5 на автора с ID 1, либо полностью удалить автора (обнулив поле post_author).
function wplessons_change_post_author($old_author_id, $new_author_id = 0) {
global $wpdb;
// Если $new_author_id = 0, автор будет удалён
$table = $wpdb->posts;
$result = $wpdb->update(
$table,
array('post_author' => $new_author_id),
array('post_author' => $old_author_id),
array('%d'),
array('%d')
);
return $result; // количество обновленных записей
}
Пример использования:
// Заменить автора с ID 5 на автора с ID 1
$updated = wplessons_change_post_author(5, 1);
echo "Обновлено записей: " . $updated;
// Удалить автора с ID 3 (установить в 0)
$deleted = wplessons_change_post_author(3, 0);
echo "Обновлено записей: " . $deleted;
Функцию удобно запускать один раз, например, через файл functions.php вашей темы или с помощью плагина для выполнения кода, например, WPRemark.
Удаление отображения автора на фронтенде WordPress
Если нужно не просто изменить автора, а полностью скрыть информацию об авторе в выводе записей, то можно отключить отображение через шаблоны темы или хуки.
Отключение автора через изменение темы
В файлах темы (обычно single.php, content.php или архивных шаблонах) найдите вывод автора, например:
<?php the_author_posts_link(); ?>
Удалите или закомментируйте эти строки, чтобы автор не отображался.
Фильтрация автора через хуки
Можно программно заменить имя автора на пустую строку:
function wplessons_hide_author_name($display_name, $user_id) {
return '';
}
add_filter('the_author', 'wplessons_hide_author_name', 10, 2);
Этот код уберёт имя автора при выводе через функцию the_author(). Аналогично можно применить для других хуков, если тема использует другие методы вывода.
Как сохранить целостность данных и избежать ошибок после удаления автора
В WordPress поле post_author в таблице wp_posts обязательно содержит ID пользователя. Если установить значение в 0, записи станут безавторными, что может вызвать проблемы с некоторыми плагинами или темами.
Поэтому рекомендуется при удалении автора заменить его на системного пользователя, например, администратора с ID 1 или специального «безавторного» пользователя, созданного для таких случаев.
Для создания безавторного пользователя можно сделать так:
function wplessons_create_anonymous_user() {
$user = get_user_by('login', 'anonymous');
if (!$user) {
$user_id = wp_create_user('anonymous', wp_generate_password(), 'anonymous@example.com');
$user = get_user_by('id', $user_id);
$user->set_role('subscriber');
}
return $user->ID;
}
Далее используйте его ID для замены автора.
Примеры плагинов для управления авторами и мультиавторства
Если хотите расширить возможности управления авторами, рассмотрите плагины, которые помогают делать это без ручного кода:
- Expert Review — плагин для расширенного управления контентом, включая возможности изменения авторов.
- WPRemark — позволяет выполнять произвольные SQL-запросы и PHP-код для массовых правок.
Но если задача одноразовая и простая — лучше использовать код, описанный выше.
Заключение
Изменение или удаление автора в старых записях WordPress — задача, которую можно эффективно решить без сторонних плагинов, используя простой код. Это помогает сохранить производительность сайта и избежать лишних зависимостей. Главное — всегда делайте резервные копии базы данных перед массовыми изменениями.