Иногда возникает задача быстро удалить все записи, созданные определённым автором в WordPress. Это может понадобиться при удалении пользователя, очистке контента или реорганизации сайта. В админке WordPress такой массовой операции нет, поэтому оптимальным решением будет программное удаление через код.
Почему удалять записи по автору вручную неудобно
Если у автора много записей, удалять их вручную через админку сложно и долго. Стандартные средства WordPress позволяют удалять посты только по одному или ограниченными пакетами, при этом сложно отфильтровать записи по автору и типу.
Программное удаление позволяет автоматизировать процесс, контролировать логику и безопасность операции, а также интегрировать её в другие процессы — например, в удаление пользователя.
Использование WP_Query для выборки записей автора
Первым шагом будет выборка всех записей, принадлежащих нужному автору. Для этого мы используем класс WP_Query с параметром author.
function wpbook_get_posts_by_author($author_id) {
$args = [
'author' => $author_id,
'posts_per_page' => -1, // Получить все
'post_type' => ['post', 'page'], // Можно указать нужные типы записей
'post_status' => 'any' // Включая черновики и удалённые
];
$query = new WP_Query($args);
return $query->posts;
}Здесь функция возвращает массив объектов записей, принадлежащих автору с ID $author_id. Вы можете добавить или убрать типы записей в параметре post_type, если нужно удалить, например, только записи или все пользовательские типы.
Удаление записей по ID с помощью wp_delete_post
Для удаления записи в WordPress используется функция wp_delete_post($post_id, $force_delete). Второй параметр $force_delete определяет, будет ли запись удалена сразу (без попадания в корзину).
Пример функции, которая удаляет все записи автора без помещения в корзину:
function wpbook_delete_posts_by_author($author_id) {
$posts = wpbook_get_posts_by_author($author_id);
foreach ($posts as $post) {
// Удаляем запись без корзины
wp_delete_post($post->ID, true);
}
}Такой код гарантирует полное удаление всех постов автора.
Дополнительные рекомендации и безопасность
Перед массовым удалением рекомендуется сделать резервную копию базы данных, чтобы не потерять важные данные. Также, если вы вызываете удаление из публичного кода, обязательно проверяйте права пользователя, чтобы избежать несанкционированного удаления.
Пример проверки прав, если функция вызывается по AJAX или через панель администратора:
function wpbook_delete_author_posts_secure($author_id) {
if (!current_user_can('delete_posts')) {
wp_die('У вас нет прав на удаление записей');
}
wpbook_delete_posts_by_author($author_id);
}Пример интеграции с удалением пользователя
Если вы хотите при удалении пользователя сразу удалить его записи, можно повесить функцию на хук delete_user:
add_action('delete_user', 'wpbook_delete_posts_by_author');В этом случае при удалении пользователя через админку автоматически удалятся все его записи.
Полный пример плагина для удаления записей по автору через WP-CLI
Если вы используете WP-CLI, можно создать команду для удаления записей автора:
if (defined('WP_CLI') && WP_CLI) {
class WPBook_Delete_Author_Posts_Command {
public function delete($args) {
list($author_id) = $args;
if (!is_numeric($author_id)) {
WP_CLI::error('Укажите корректный ID автора');
}
$posts = wpbook_get_posts_by_author($author_id);
foreach ($posts as $post) {
wp_delete_post($post->ID, true);
}
WP_CLI::success('Все записи автора удалены');
}
}
WP_CLI::add_command('wpbook delete-author-posts', 'WPBook_Delete_Author_Posts_Command');
}После установки такого плагина можно вызвать из терминала:
wp wpbook delete-author-posts 13 — и будут удалены все записи автора с ID 13.
Заключение по теме удаления записей автора в WordPress программно
Удаление записей по автору в WordPress — частая задача, которая легко решается с помощью WP_Query и wp_delete_post. Такая автоматизация экономит время, особенно при большом количестве записей. Главное — соблюдать меры безопасности и резервного копирования.
Если вы хотите упростить работу с удалением и другой оптимизацией, обратите внимание на плагины из магазина WPSHOP, которые помогут автоматизировать многие рутинные процессы WordPress.