Автоматическое удаление записей по возрасту в WordPress

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

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

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

  • Поддерживать актуальность информации для посетителей.
  • Уменьшать размер базы данных, что ускоряет работу сайта.
  • Автоматизировать рутинные процессы администрирования.

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

Основы работы с WP Cron для удаления записей

WP Cron — встроенный механизм планирования задач в WordPress. Он позволяет запускать функции по расписанию. Для удаления записей по возрасту нам понадобится:

  1. Создать функцию, которая будет искать и удалять записи старше заданного времени.
  2. Зарегистрировать событие в WP Cron, чтобы функция запускалась автоматически, например, раз в сутки.

Пример функции для удаления записей старше 30 дней

function wplike_delete_old_posts() {
    $args = array(
        'date_query' => array(
            array(
                'before' => '30 days ago',
                'inclusive' => true,
            ),
        ),
        '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 - удаление без возможности восстановления
        }
    }
}

Эта функция получает все публикации старше 30 дней и удаляет их без перемещения в корзину.

Регистрация задачи в WP Cron

Для запуска функции по расписанию добавим регистрацию события:

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

add_action('wplike_daily_delete_old_posts', 'wplike_delete_old_posts');

Так мы настроим ежедневный запуск удаления старых записей.

Дополнительные настройки и варианты удаления

Можно расширить функционал, чтобы удалять записи определённых типов, категорий или с метаполями. Например, удаление только из категории «Новости»:

function wplike_delete_old_news_posts() {
    $args = array(
        'category_name' => 'novosti',
        'date_query' => array(
            array('before' => '30 days ago', 'inclusive' => true),
        ),
        'post_type' => 'post',
        'post_status' => 'publish',
        'fields' => 'ids',
        'posts_per_page' => -1,
    );
    $old_news = get_posts($args);

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

Или, например, удалять записи с определённым метаполем:

function wplike_delete_posts_by_meta() {
    $args = array(
        'meta_key' => 'wplike_expire_date',
        'meta_value' => current_time('Y-m-d'),
        'meta_compare' => '<=',
        'post_type' => 'post',
        'post_status' => 'publish',
        'fields' => 'ids',
        'posts_per_page' => -1,
    );
    $expired_posts = get_posts($args);

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

Полезные плагины для автоматизации удаления записей

Если хотите использовать готовые решения без написания кода, обратите внимание на следующие плагины:

  • Auto Delete Posts — позволяет настроить удаление постов по дате публикации с гибкими фильтрами.
  • Clearfy Pro — многофункциональный плагин оптимизации, включая управление автоматическим удалением и очисткой базы.
  • WPRemark — для управления отзывами, который можно использовать для удаления устаревших комментариев и записей.

Рекомендации по безопасности и тестированию

Перед внедрением автоматического удаления обязательно создайте резервную копию базы данных. Тестируйте код на тестовом сайте, чтобы избежать случайного удаления важных данных. В функции удаления используйте параметр wp_delete_post($post_id, false) для перемещения в корзину, если хотите иметь возможность восстановления.

Выводы и полезные советы

Автоматизация удаления старых записей — простой способ поддерживать сайт в актуальном состоянии и оптимизировать производительность. Используйте WP Cron и функции WordPress для гибкой настройки, а при необходимости — готовые плагины с расширенными возможностями. Главное — внимательно тестировать и создавать резервные копии.

Как настроить автоматическое удаление неактивных пользователей WordPress
04.02.2026
WooCommerce: как добавить дополнительные поля в заказ без плагинов
30.04.2026
Как создать визуальные таблицы в WordPress без кодирования
18.01.2026
WooCommerce: Автоматическое обновление статуса заказа при изменении платежа
20.05.2026
Как создать плагин для WordPress своими руками
10.11.2025