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

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

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

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

  • Экономить время на ручной очистке базы данных.
  • Поддерживать актуальность контента.
  • Улучшать SEO-за счет удаления нерелевантных страниц.
  • Сокращать размер базы данных для повышения скорости сайта.

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

Автоматическое удаление устаревших записей с помощью кода

Самый гибкий способ — создать функцию, которая будет запускаться по расписанию и удалять записи старше определенного периода. Ниже пример функции wptour_delete_old_posts(), которая удаляет публикации старше 180 дней.

function wptour_delete_old_posts() {
    global $wpdb;
    $days = 180; // количество дней
    $date = date('Y-m-d H:i:s', strtotime("-" . $days . " days"));

    // Получаем ID записей старше $days дней
    $old_posts = $wpdb->get_col($wpdb->prepare(
        "SELECT ID FROM $wpdb->posts WHERE post_type = 'post' AND post_status = 'publish' AND post_date < %s",
        $date
    ));

    if (!empty($old_posts)) {
        foreach ($old_posts as $post_id) {
            wp_trash_post($post_id); // отправляем в корзину
        }
    }
}

// Регистрируем событие в WP-Cron
if (!wp_next_scheduled('wptour_daily_delete_old_posts')) {
    wp_schedule_event(time(), 'daily', 'wptour_daily_delete_old_posts');
}

add_action('wptour_daily_delete_old_posts', 'wptour_delete_old_posts');

Эта функция выполняется ежедневно и перемещает старые записи в корзину. Вы можете изменить период и тип записей по своему усмотрению. Важно использовать wp_trash_post(), а не wp_delete_post(), чтобы иметь возможность восстановить записи из корзины, если понадобится.

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

Код рекомендуется добавить либо в файл functions.php вашей дочерней темы, либо создать небольшой плагин. Для создания плагина создайте файл wptour-auto-delete.php с заголовком:

<?php
/**
 * Plugin Name: WPTOUR Auto Delete Old Posts
 * Description: Автоматическое удаление старых записей
 * Version: 1.0
 * Author: WPTOUR
 */

// Вставьте сюда функцию и регистрацию Cron

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

Если вы не хотите писать код, можно использовать готовые решения. Вот несколько популярных плагинов с похожей функциональностью:

  • Auto Post Delete — позволяет задать период старения записей и автоматически удаляет их. Прост в настройке, но ограничен по функционалу.
  • WP Bulk Delete — мощный плагин для массового удаления записей по различным критериям: дата, статус, таксономии и т.п. Поддерживает автоматический режим через WP-Cron.
  • Advanced Post Cleaner — позволяет удалять черновики, мусор, устаревшие записи и другие типы контента с гибкими настройками.

При выборе плагина обратите внимание на совместимость с вашей версией WordPress и отзывы пользователей. Для автоматического запуска задач плагин использует WP-Cron, который по умолчанию зависит от посещений сайта. Для надежности можно настроить системный cron на сервере.

Как безопасно настроить удаление и избежать потери важных данных

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

  • Резервное копирование — перед автоматизацией сделайте полную резервную копию базы данных.
  • Используйте корзину — как в примере выше, лучше сначала помещать записи в корзину, чтобы можно было восстановить.
  • Организуйте аудит — ведите лог удалений, чтобы понимать, что было удалено и когда.
  • Тестируйте на локальном или тестовом сервере — проверьте работу автоматизации, чтобы избежать сбоев на рабочем сайте.

Дополнительные возможности автоматизации с помощью WP-CLI

WP-CLI предоставляет мощный интерфейс командной строки для управления WordPress. Можно написать кастомную команду для удаления старых записей, запускать её вручную или по расписанию через системный cron.

wp wptour delete-old-posts --days=180

Для этого создайте WP-CLI команду в вашем плагине:

if (defined('WP_CLI') && WP_CLI) {
    class WPTOUR_Delete_Old_Posts_Command {
        public function __invoke($args, $assoc_args) {
            $days = isset($assoc_args['days']) ? intval($assoc_args['days']) : 180;
            $date = date('Y-m-d H:i:s', strtotime("-" . $days . " days"));

            $old_posts = get_posts([
                'date_query' => [
                    'before' => $date,
                ],
                'post_type' => 'post',
                'post_status' => 'publish',
'numberposts' => -1
            ]);

            foreach ($old_posts as $post) {
                wp_trash_post($post->ID);
                WP_CLI::log("Moved post ID {$post->ID} to trash.");
            }

            WP_CLI::success("Old posts trashed successfully.");
        }
    }
    WP_CLI::add_command('wptour delete-old-posts', 'WPTOUR_Delete_Old_Posts_Command');
}

Это расширит возможности по управлению сайтом и позволит интегрировать удаление в автоматические процессы сервера.

Заключение

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

Если хотите расширить функционал сайта, обратите внимание на плагины из WPShop.ru — например, плагин Clearfy Pro помогает оптимизировать работу сайта и может дополнительно облегчить управление контентом.

Как удалить бесполезные метаданные в WordPress
24.02.2026
Как отключить автоматическое изменение URL в WordPress
24.01.2026
Как правильно создать и использовать переименованные таксономии в WordPress
22.03.2026
Как отключить автоматическое обновление плагинов WordPress
17.02.2026
WooCommerce: как избежать ошибок при массовом импорте продуктов
18.05.2026

Уроки со скриншотами, подробные руководства