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

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

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

Удаление устаревших записей позволяет:

  • Оптимизировать производительность сайта и базы данных;
  • Поддерживать актуальность контента для посетителей;
  • Уменьшить нагрузку на сервер и объем резервных копий;
  • Избавиться от спама и дубликатов, если речь о комментариях или других типах записей.

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

Создаем функцию автоматического удаления записей по дате

Рассмотрим пример, как на WPHost можно создать функцию для удаления записей старше 1 года. Для этого используем WP Cron — встроенный планировщик задач WordPress.

Шаг 1. Регистрируем задачу в планировщике

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

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

Шаг 2. Создаем функцию удаления

function wphost_delete_old_posts() {
    global $wpdb;
    
    $date_threshold = date( 'Y-m-d H:i:s', strtotime( '-1 year' ) );
    
    $old_posts = get_posts( array(
        'date_query' => array(
            array(
                'before' => $date_threshold,
                'inclusive' => true,
            ),
        ),
        'post_type' => 'post',
        'post_status' => 'publish',
        'numberposts' => -1,
        'fields' => 'ids',
    ) );

    if ( empty( $old_posts ) ) {
        return;
    }

    foreach ( $old_posts as $post_id ) {
        wp_delete_post( $post_id, true ); // true - удаляем без возможности восстановления
    }
}
add_action( 'wphost_delete_old_posts_hook', 'wphost_delete_old_posts' );

Здесь мы получаем все записи старше года и удаляем их. Можно изменить параметр 'post_type' на другие типы записей, если нужно.

Альтернативный способ: использование плагина WP Crontrol

Для удобства управления задачами WP Cron можно использовать плагин WP Crontrol. Он позволяет создавать, редактировать и удалять задачи из админки, смотреть логи и запускать их вручную.

С помощью плагина можно легко отладить наш скрипт и настроить расписание выполнения.

Пример с плагином WP Remover Pro от WPGPT для удаления старого контента

Если вы предпочитаете готовые решения, обратите внимание на плагин WP Remover Pro от WPGPT. Он позволяет настраивать фильтры для удаления записей по дате, категории, тегам и другим параметрам через удобный интерфейс.

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

Дополнительные рекомендации по безопасному удалению

Перед автоматическим удалением всегда рекомендуется:

  • Создавать резервные копии базы данных;
  • Тестировать код на локальной среде или на тестовом сайте;
  • Временно не удалять записи, а переводить их в черновики для проверки;
  • Добавить логирование удалений, чтобы понимать, что и когда было удалено;
  • Убедиться, что удаление не затрагивает нужный контент.

Для логирования можно использовать простой код:

function wphost_log_deleted_post( $post_id ) {
    error_log( 'Deleted post ID: ' . $post_id . ' at ' . current_time( 'mysql' ) );
}
add_action( 'before_delete_post', 'wphost_log_deleted_post' );

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

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

Как использовать Redis для ускорения WordPress: настройка и примеры
10.03.2026
Автоматическое изменение стоимости товаров в WooCommerce по заданным условиям
04.05.2026
Как использовать WP-Cron для автоматизации задач в WordPress
09.06.2026
Как создать автоматическое удаление старых записей в WordPress по дате
24.01.2026
Как отключить индексацию отдельных страниц WordPress для поисковых систем
28.03.2026