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

Почему важно уметь удалять записи по условиям

В работе с WordPress часто возникает необходимость массово удалять записи по определённым критериям: по дате, категории, меткам, статусу публикации, или по пользовательским полям. Это может понадобиться для очистки базы данных, удаления устаревшего контента или в рамках автоматизации бизнес-процессов. Ручная очистка через админку в таком случае малоэффективна и трудозатратна.

В этой статье рассмотрим, как можно удалить записи по условиям с помощью популярных плагинов и самостоятельно написать функцию на PHP для интеграции в ваш сайт. Это особенно важно для сайтов с большим объёмом записей, где автоматизация помогает избежать ошибок и экономит время.

Удаление записей с помощью плагинов WordPress

Плагин WP Bulk Delete

Один из самых популярных и универсальных инструментов для массового удаления записей по условиям — WP Bulk Delete. Он позволяет удалять записи по следующим параметрам:

  • Категории и таксономии
  • Статусу публикации (черновики, опубликованные и др.)
  • Типу записи (посты, страницы, кастомные типы)
  • Периоду публикации (например, старше определённой даты)
  • Пользовательским полям

Плагин имеет удобный интерфейс, где вы настраиваете фильтры и запускаете удаление. Важно перед массовым удалением сделать бэкап базы данных.

Пример использования WP Bulk Delete для удаления постов старше 1 года

В настройках плагина выберите тип записи — «Посты», затем включите фильтр по дате публикации и задайте условие «старше 365 дней». После запуска процесса все посты старше года будут удалены.

Удаление записей через собственный код на PHP

Подготовка функции удаления по условиям

Если нужно встроить удаление записей в логику сайта или плагина, проще написать собственную функцию. Ниже рассмотрим пример удаления постов по дате и категории с использованием WP_Query и функции wp_delete_post().

function wppay_delete_posts_by_conditions() {
    $args = array(
        'post_type' => 'post',
        'posts_per_page' => -1,
        'date_query' => array(
            array(
                'before' => '1 year ago',
                'inclusive' => true,
            ),
        ),
        'category_name' => 'novosti',
        'fields' => 'ids',
        'post_status' => 'any',
    );

    $query = new WP_Query( $args );

    if ( !empty( $query->posts ) ) {
        foreach ( $query->posts as $post_id ) {
            wp_delete_post( $post_id, true ); // true — удаление без перемещения в корзину
        }
    }
}

Эту функцию можно запускать вручную, по крону или через AJAX. Она удалит все посты из категории «новости», опубликованные больше года назад.

Расширение функции для пользовательских типов записей и метаполей

Для удаления по кастомным типам записей измените параметр post_type на нужный. Чтобы фильтровать по метаполям, добавьте параметр meta_query. Например, удалим записи, где метаполе status равно archived:

function wppay_delete_custom_posts_by_meta() {
    $args = array(
        'post_type' => 'my_custom_type',
        'posts_per_page' => -1,
        'meta_query' => array(
            array(
                'key' => 'status',
                'value' => 'archived',
                'compare' => '=',
            ),
        ),
        'fields' => 'ids',
    );

    $query = new WP_Query( $args );

    if ( !empty( $query->posts ) ) {
        foreach ( $query->posts as $post_id ) {
            wp_delete_post( $post_id, true );
        }
    }
}

Как безопасно использовать удаление записей по условию

Удаление данных на сайте — операция необратимая, поэтому важно соблюдать следующие рекомендации:

  • Всегда делайте резервную копию базы данных перед массовым удалением.
  • Проверяйте условия выборки на тестовом сайте или с ограниченным количеством записей.
  • Включайте логирование действий, чтобы отслеживать, какие записи и когда удалялись.
  • Если данные чувствительные, используйте удаление с учетом прав пользователя.

Пример логирования удаления

function wppay_delete_post_with_log( $post_id ) {
    if ( wp_delete_post( $post_id, true ) ) {
        error_log( "[WPPAY] Удалён пост ID: $post_id" );
    }
}

Используйте эту функцию вместо wp_delete_post напрямую для ведения журнала.

Альтернативные плагины и инструменты

Кроме WP Bulk Delete, есть и другие плагины для массового удаления:

  • Bulk Delete — похожий функционал, удобен для удаления по пользовательским полям и таксономиям.
  • Advanced Database Cleaner — помогает не только с удалением записей, но и с очисткой базы от мусорных данных.
  • WP-CLI — если у вас есть доступ к командной строке, можно использовать консольные команды для удаления постов, например, wp post delete $(wp post list --post_type=post --format=ids --date_query='before=1 year ago').

Заключение по теме удаления записей по условиям

Удаление записей в WordPress по заданным условиям — ключевая задача для грамотного управления контентом и базой данных. Используя готовые плагины или собственный код, вы можете гибко и безопасно очищать сайт, поддерживая его актуальность и производительность. Не забывайте про резервные копии и тщательное тестирование перед массовыми операциями.

Для удобства управления и дополнительных возможностей рекомендуем ознакомиться с плагином WP Bulk Delete на WPSHOP.ru — он отлично справляется с большинством задач по удалению записей.

WooCommerce: как автоматически отключать неактивные платежи и подписки
28.04.2026
Как создать проверку и валидацию платежей в WordPress
17.03.2026
Как отображать платежные данные в админке WordPress
17.02.2026
WooCommerce: как реализовать авторизацию платежей через REST API для собственных приложений
29.05.2026
Как отладить проблемы с платежными API в WordPress
04.03.2026