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

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

Что такое WP Cron и как он работает

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

Это означает, что для сайтов с низкой посещаемостью срабатывание задач может задерживаться. Для таких случаев рекомендуется настроить системный cron на сервере, который будет вызывать wp-cron.php с нужной периодичностью.

Основные функции для работы с WP Cron:

  • wp_schedule_event() — добавить событие по расписанию;
  • wp_clear_scheduled_hook() — удалить запланированное событие;
  • add_action() — назначить функцию на запуск по событию.

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

Рассмотрим пример, как автоматически создавать кастомные записи (например, новости с временными данными) ежедневно в определённое время.

function wpaddons_schedule_daily_post_creation() {
    if ( ! wp_next_scheduled( 'wpaddons_create_daily_post_event' ) ) {
        wp_schedule_event( strtotime('01:00:00'), 'daily', 'wpaddons_create_daily_post_event' );
    }
}
add_action( 'wp', 'wpaddons_schedule_daily_post_creation' );

function wpaddons_create_daily_post() {
    $post_data = array(
        'post_title'    => 'Автоматическая новость ' . date('Y-m-d'),
        'post_content'  => 'Это автоматически созданная новость.',
        'post_status'   => 'publish',
        'post_author'   => 1,
        'post_type'     => 'post'
    );

    wp_insert_post( $post_data );
}
add_action( 'wpaddons_create_daily_post_event', 'wpaddons_create_daily_post' );

В этом коде мы создаём событие wpaddons_create_daily_post_event, которое запускается каждый день в 1:00 и создаёт новую запись типа post. Обратите внимание, что функция wpaddons_schedule_daily_post_creation проверяет, есть ли уже запланированное событие, чтобы не создавать дубликаты.

Расширение: создание записей с пользовательскими полями

Если нужно создавать записи с метаданными или кастомными полями, используйте функции update_post_meta() внутри обработчика:

function wpaddons_create_daily_post() {
    $post_id = wp_insert_post(array(
        'post_title'  => 'Автоматическая новость ' . date('Y-m-d'),
        'post_content'=> 'Контент с дополнительными данными.',
        'post_status' => 'publish',
        'post_author' => 1
    ));

    if ( $post_id ) {
        update_post_meta( $post_id, '_wpaddons_meta_key', 'Значение мета');
    }
}

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

Для удаления устаревших записей можно также воспользоваться WP Cron. Например, удалять записи старше 30 дней ежедневно.

function wpaddons_schedule_daily_post_deletion() {
    if ( ! wp_next_scheduled( 'wpaddons_delete_old_posts_event' ) ) {
        wp_schedule_event( strtotime('02:00:00'), 'daily', 'wpaddons_delete_old_posts_event' );
    }
}
add_action( 'wp', 'wpaddons_schedule_daily_post_deletion' );

function wpaddons_delete_old_posts() {
    $args = array(
        'date_query' => array(
            array(
                'column' => 'post_date',
                'before' => '30 days ago'
            ),
        ),
        'post_type'      => 'post',
        'post_status'    => 'publish',
        'fields'         => 'ids',
        'posts_per_page' => -1
    );

    $old_posts = get_posts( $args );

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

Данный код настроит удаление всех опубликованных постов старше 30 дней в 2:00 ночи. Если нужно удалять записи другого типа, поменяйте параметр post_type.

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

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

  • WP Scheduled Posts — расширяет стандартный календарь WP Cron, позволяет управлять временем публикации и удалять запланированные записи.
  • Auto Post Scheduler — автоматически публикует черновики и может удалять устаревшие записи.
  • Clearfy Pro (https://wpshop.ru/clearfy-pro?utm_source=wpaddons.ru&utm_medium=article&utm_campaign=kak-avtomaticheski-sozdat-i-udaljat-resheniya-v-wordpress-po-raspisaniyu) — плагин для оптимизации и автоматизации разных процессов, включая управление записями.

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

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

  • Всегда проверяйте права доступа и корректность данных перед созданием или удалением.
  • Используйте wp_delete_post( $post_id, true ) с осторожностью — удаление без возможности восстановления.
  • Для сайтов с высокой нагрузкой лучше запускать WP Cron через системный cron, чтобы задачи срабатывали точно по расписанию.
  • Проверяйте, что задачи не создают дубликаты и не конфликтуют с другими процессами.

Как отключить автоматические задачи WP Cron и настроить системный cron

Для повышения точности рекомендуется отключить стандартный WP Cron и настроить вызов wp-cron.php по расписанию серверным cron:

define('DISABLE_WP_CRON', true);

Добавьте эту строку в wp-config.php, а затем создайте cron-задачу на сервере, например на каждый час:

0 * * * * wget -q -O - https://your-site.ru/wp-cron.php?doing_wp_cron >/dev/null 2>&1

Это позволит выполнять запланированные задачи в точное время без зависимости от посещаемости сайта.

Выводы

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

Подробности и дополнительные инструменты для автоматизации вы найдёте на WPGShop.

Как создать собственный шорткод в WordPress
05.11.2025
Автоматическое создание и удаление записей в WordPress по расписанию
06.04.2026
Автоматическое отключение плагинов по расписанию в WordPress
22.01.2026
Как автоматически удалять неиспользуемые виджеты WordPress
27.03.2026
Автоматическое изменение титлов и метаданных в WordPress по шаблону
19.01.2026