Как использовать WP-Cron для автоматического удаления старых записей в WordPress

|

Диагностика проблемы: зачем автоматизировать удаление старого контента

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

Что такое WP-Cron и как он работает

WP-Cron — это встроенный в WordPress механизм для запуска запланированных задач по расписанию. В отличие от системного cron, WP-Cron запускается при посещении сайта, что требует определённой настройки для стабильной работы.

Преимущества использования WP-Cron для удаления записей

Пошаговое решение: настройка автоматического удаления старых записей через WP-Cron

1. Создание пользовательской функции удаления

Напишем функцию, которая удалит все записи старше определённой даты. Например, удалим записи старше 1 года:

function wporg_delete_old_posts() {
    global $wpdb;
    $date_threshold = date('Y-m-d H:i:s', strtotime('-1 year'));

    $old_posts = $wpdb->get_col( $wpdb->prepare(
        "SELECT ID FROM {$wpdb->posts} WHERE post_date < %s AND post_status = 'publish' AND post_type = 'post'",
        $date_threshold
    ) );

    if ( ! empty( $old_posts ) ) {
        foreach ( $old_posts as $post_id ) {
            wp_delete_post( $post_id, true ); // true — принудительное удаление без корзины
        }
    }
}

2. Регистрация пользовательского события WP-Cron

Добавим событие, которое будет запускаться ежедневно:

function wporg_schedule_delete_old_posts() {
    if ( ! wp_next_scheduled( 'wporg_daily_delete_old_posts' ) ) {
        wp_schedule_event( time(), 'daily', 'wporg_daily_delete_old_posts' );
    }
}
add_action( 'wp', 'wporg_schedule_delete_old_posts' );

add_action( 'wporg_daily_delete_old_posts', 'wporg_delete_old_posts' );

3. Очистка расписания при деактивации темы или плагина

function wporg_clear_delete_old_posts_schedule() {
    $timestamp = wp_next_scheduled( 'wporg_daily_delete_old_posts' );
    if ( $timestamp ) {
        wp_unschedule_event( $timestamp, 'wporg_daily_delete_old_posts' );
    }
}
register_deactivation_hook( __FILE__, 'wporg_clear_delete_old_posts_schedule' );

Проверка результата после внедрения

Частые ошибки и как их исправить

Практические советы по безопасности и производительности

Сравнение вариантов автоматического удаления старых записей

МетодПлюсыМинусы
WP-Cron с кастомной функциейГибкость, не требует плагинов, точечное удалениеЗависит от посещаемости сайта, требует кода
Системный cron с WP-CLIНадёжно, не зависит от посещений, быстроТребует SSH-доступа и навыков работы с сервером
Плагины (например, WP Optimize)Простота настройки, дополнительные функции оптимизацииМожет быть избыточным, нагрузка на сайт, риск конфликтов
Как отключить Emoji в WordPress: эффективные методы и примеры кода
11.02.2026
Автоматическое удаление неиспользуемых мета данных в WordPress: практические решения и примеры кода
12.03.2026
Как автоматически удалять старые записи через AJAX в WordPress
24.01.2026
Как использовать WP-Cron для автоматизации задач в WordPress
20.04.2026
Как создать и подключить собственный виджет в WordPress: подробное руководство с примерами кода
10.12.2025
×
-15%
на премиум-тему
Reboot

Создай сайт мечты
на WordPress!

Купить со скидкой »