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

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

Зачем нужна автоматизация работы с черновиками в WordPress

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

Автоматизация этих процессов позволяет:

  • Создавать заготовки постов по расписанию, например, для планирования будущих публикаций.
  • Удалять черновики, которым больше недели или месяца, чтобы не захламлять базу данных.
  • Обеспечивать чистоту в админ-панели и повышать производительность сайта.

Рассмотрим, как реализовать оба сценария на практике.

Автоматическое создание черновиков с помощью WP-Cron

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

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

function wpdigest_create_daily_draft() {
    $new_post = array(
        'post_title'    => 'Автоматический черновик '.date('Y-m-d H:i:s'),
        'post_status'   => 'draft',
        'post_author'   => 1,
        'post_type'     => 'post',
    );

    wp_insert_post( $new_post );
}

// Регистрируем событие при активации темы или плагина
if ( ! wp_next_scheduled( 'wpdigest_daily_draft_event' ) ) {
    wp_schedule_event( time(), 'daily', 'wpdigest_daily_draft_event' );
}

// Хук на событие
add_action( 'wpdigest_daily_draft_event', 'wpdigest_create_daily_draft' );

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

Как отключить расписание при деактивации

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

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

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

Если вы накопили много старых черновиков, можно настроить их автоматическое удаление. Это помогает экономить место и поддерживать порядок.

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

function wpdigest_delete_old_drafts() {
    global $wpdb;
    $days = 30;
    $date_threshold = 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_threshold
    ) );

    foreach ( $drafts as $draft ) {
        wp_delete_post( $draft->ID, true );
    }
}

// Запускаем удаление по расписанию, например, еженедельно
if ( ! wp_next_scheduled( 'wpdigest_weekly_delete_drafts' ) ) {
    wp_schedule_event( time(), 'weekly', 'wpdigest_weekly_delete_drafts' );
}
add_action( 'wpdigest_weekly_delete_drafts', 'wpdigest_delete_old_drafts' );

Таким образом, старые черновики будут автоматически удаляться каждую неделю.

Важные моменты и безопасность

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

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

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

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

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

Как расширить функциональность автоматизации черновиков

Кроме базовых сценариев, можно усложнить автоматизацию:

  • Добавлять в черновики шаблонный текст, списки или специальные мета-данные.
  • Отправлять уведомления администратору при создании или удалении черновиков.
  • Использовать AJAX для ручного запуска очистки прямо из админ-панели.

Пример добавления шаблонного содержимого в черновик

function wpdigest_create_draft_with_template() {
    $template = "<h2>Заголовок раздела</h2>\n<p>Описание и текст.</p>";
    $new_post = array(
        'post_title'    => 'Черновик с шаблоном '.date('Y-m-d H:i:s'),
        'post_content'  => $template,
        'post_status'   => 'draft',
        'post_author'   => 1,
        'post_type'     => 'post',
    );
    wp_insert_post( $new_post );
}

Эта функция создаст черновик с заранее заданной структурой, что ускорит последующее написание статьи.

WooCommerce: как автоматически удалять неактивные заказы через код
04.06.2026
Как отключить автовоспроизведение видео в WordPress
08.01.2026
WooCommerce: как автоматически отключать возможность оформления заказа при отсутствии товара на складе
17.06.2026
Как создать автоматический плагин для проверки состояния сайта WordPress
27.01.2026
Автоматический подбор категорий для постов в WordPress: практическое руководство
05.04.2026