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

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

Зачем автоматизировать создание и удаление черновиков в WordPress?

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

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

Автоматическое создание черновиков по расписанию

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

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

function wp5_create_scheduled_draft() {
    $args = [
        'post_title'  => 'Автоматически созданный черновик '.date('Y-m-d H:i:s'),
        'post_content' => 'Это черновик, созданный автоматически по расписанию',
        'post_status' => 'draft',
        'post_author' => 1,
        'post_type'   => 'post'
    ];
    wp_insert_post($args);
}

// Запускаем функцию один раз в день
if (! wp_next_scheduled('wp5_daily_draft_event')) {
    wp_schedule_event(time(), 'daily', 'wp5_daily_draft_event');
}
add_action('wp5_daily_draft_event', 'wp5_create_scheduled_draft');

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

Использование плагина для создания черновиков

Если вы не хотите писать код, можно использовать плагины, например, Auto Post Scheduler. Он позволяет автоматически публиковать или создавать посты и черновики с заданной периодичностью и условиями.

Автоматическое удаление старых черновиков

Удаление устаревших черновиков помогает поддерживать базу данных в порядке. Рассмотрим, как реализовать автоматическую очистку черновиков старше определённого времени.

Пример функции для удаления черновиков старше 30 дней

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

    $drafts = $wpdb->get_results(
        $wpdb->prepare(
            "SELECT ID FROM {$wpdb->posts} WHERE post_status = 'draft' AND post_date < %s",
            $date_limit
        )
    );

    foreach ($drafts as $draft) {
        wp_delete_post($draft->ID, true); // true - без перемещения в корзину
    }
}

// Планируем еженедельное выполнение
if (! wp_next_scheduled('wp5_weekly_delete_drafts')) {
    wp_schedule_event(time(), 'weekly', 'wp5_weekly_delete_drafts');
}
add_action('wp5_weekly_delete_drafts', 'wp5_delete_old_drafts');

Этот скрипт ищет все черновики старше 30 дней и удаляет их без возможности восстановления (без помещения в корзину). Частоту запуска можно скорректировать под свои нужды.

Плагины для удаления черновиков

Для тех, кто не хочет писать код, подойдёт плагин Cleanup Optimizer, позволяющий удалять старые черновики и оптимизировать базу данных в один клик или по расписанию.

Комбинированное решение: автоматизация создания и удаления черновиков

Можно объединить оба сценария для полной автоматизации. Добавьте код создания черновиков и удаления старых в functions.php вашей темы или в собственный плагин. Это обеспечит регулярное пополнение черновиков и очистку устаревших записей.

Кроме того, если на вашем сайте используется плагин My Popup от WPSHOP, вы можете автоматически создавать черновики с анонсами всплывающих окон для тестирования и удалять устаревшие заготовки.

Практические рекомендации и советы

  • Всегда тестируйте код на локальном или тестовом сервере, чтобы избежать потери данных;
  • Резервное копирование базы данных перед автоматическими удалениями – обязательное условие;
  • При использовании WP Cron учитывайте, что он запускается при посещении сайта, что может влиять на точность расписания;
  • Для критически важных задач лучше настроить системный cron с вызовом wp-cron.php;
  • Используйте метаданные или пользовательские поля, если нужно более гибко фильтровать черновики для удаления.

Пример расширенного фильтра с пользовательским полем

function wp5_delete_custom_old_drafts() {
    $args = [
        'post_type' => 'post',
        'post_status' => 'draft',
        'meta_query' => [
            [
                'key' => '_wp5_custom_flag',
                'value' => '1',
                'compare' => '='
            ]
        ],
        'date_query' => [
            [
                'column' => 'post_date',
                'before' => '30 days ago'
            ]
        ],
        'fields' => 'ids',
        'nopaging' => true
    ];
    $drafts = get_posts($args);
    foreach ($drafts as $draft_id) {
        wp_delete_post($draft_id, true);
    }
}

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

Как использовать REST API WordPress для автоматизации задач
20.02.2026
Исправление дублирования артикулов (SKU) в WooCommerce
22.04.2026
Как автоматизировать удаление старых черновиков и автосохранений в WordPress
14.01.2026
Как создать динамические роли пользователей в WordPress с примерами кода
12.12.2025
Как использовать nestable menu в WordPress: практическое руководство с примерами кода
09.12.2025