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

|

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

Почему важно автоматизировать удаление старого контента в WordPress

На больших сайтах ручное удаление устаревших материалов может занимать много времени и приводить к ошибкам. Автоматизация помогает:

Использовать можно различные критерии для удаления: по дате публикации, по категории, по меткам, по статусу публикации или по кастомным полям.

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

Для автоматического удаления записей WordPress можно использовать встроенную систему Cron вместе с пользовательской функцией. Ниже пример кода, который удаляет публикации старше 180 дней.

function wpreboot_delete_old_posts() {
    $args = array(
        'date_query' => array(
            array(
                'column' => 'post_date',
                'before' => '180 days ago'
            )
        ),
        'post_type' => 'post',
        'post_status' => 'publish',
        'fields' => 'ids',
        'posts_per_page' => -1
    );

    $old_posts = get_posts( $args );

    if ( !empty($old_posts) ) {
        foreach ( $old_posts as $post_id ) {
            wp_delete_post( $post_id, true ); // true — жесткое удаление
        }
    }
}

// Регистрируем событие cron, если оно не запущено
if ( ! wp_next_scheduled( 'wpreboot_daily_old_post_cleanup' ) ) {
    wp_schedule_event( time(), 'daily', 'wpreboot_daily_old_post_cleanup' );
}

add_action( 'wpreboot_daily_old_post_cleanup', 'wpreboot_delete_old_posts' );

Этот код создает ежедневное задание, которое находит и удаляет все опубликованные записи старше 180 дней. Вы можете изменить параметр 'before' на любое значение, например, '90 days ago' или '1 year ago'.

Как использовать этот код:

Удаление старого контента по категории или метке

Иногда нужно удалять устаревшие записи не просто по дате, а по определённой категории или метке. Для этого расширим запрос:

function wpreboot_delete_old_category_posts() {
    $args = array(
        'date_query' => array(
            array(
                'column' => 'post_date',
                'before' => '90 days ago'
            )
        ),
        'category_name' => 'novosti', // замените на вашу категорию
        'post_status' => 'publish',
        'fields' => 'ids',
        'posts_per_page' => -1
    );

    $old_posts = get_posts( $args );

    foreach ( $old_posts as $post_id ) {
        wp_delete_post( $post_id, true );
    }
}

if ( ! wp_next_scheduled( 'wpreboot_daily_old_category_post_cleanup' ) ) {
    wp_schedule_event( time(), 'daily', 'wpreboot_daily_old_category_post_cleanup' );
}
add_action( 'wpreboot_daily_old_category_post_cleanup', 'wpreboot_delete_old_category_posts' );

Этот код удалит записи старше 90 дней только из категории «новости».

Использование плагинов для автоматизации удаления контента

Если вы предпочитаете готовые решения с удобным интерфейсом, обратите внимание на следующие плагины:

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

Советы по безопасному удалению и резервному копированию

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

Расширенные сценарии удаления с WP-CLI

Если у вас есть доступ к командной строке сервера, можно использовать WP-CLI для пакетного удаления старого контента. Пример команды для удаления всех постов старше 1 года из категории "news":

wp post delete $(wp post list --post_type=post --category_name=news --date_query_column=post_date --before='1 year ago' --format=ids) --force

Эта команда сначала получает ID постов, подходящих под условие, а затем удаляет их жёстко. Это удобно для разовых операций или скриптов автоматизации.

Выводы

Автоматическое удаление старого контента в WordPress — незаменимый инструмент для поддержания сайта в актуальном состоянии и оптимизации работы. Вы можете реализовать его как с помощью простого PHP-кода и WP Cron, так и используя готовые плагины с расширенными настройками. Обязательно используйте резервное копирование и тестируйте решения перед применением на рабочем сайте.

Как использовать AJAX в WordPress для обновления контента без перезагрузки страницы
05.12.2025
Как избежать конфликтов между плагинами WordPress: практические советы и примеры
09.12.2025
Как удалить все посты из определённой категории в WordPress через код
30.01.2026
Установка и настройка WPRemark для автоматического комментирования в WordPress
03.02.2026
Как использовать REST API WordPress для создания приложений
12.11.2025
×
WordPress
дай сайту суперсилу!

Скидки на топовые темы и плагины

Активировать суперсилу ⋙