Как автоматизировать создание и удаление записей через WP-Cron в WordPress

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

Что такое WP-Cron и зачем его использовать для автоматизации

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

Использование WP-Cron позволяет:

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

Обратите внимание, что WP-Cron зависит от посещаемости сайта — если трафик низкий, задачи могут запускаться с задержкой. Для критичных задач рекомендуется настроить системный cron и выключить WP-Cron (через define('DISABLE_WP_CRON', true); в wp-config.php).

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

Рассмотрим пример, как автоматически создавать новую запись типа post раз в день.

Регистрация расписания и задачи

Сначала добавим кастомный интервал в расписание WP-Cron, если нужно, или используем стандартные. В нашем случае используем стандартный интервал 'daily'.

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

function wpteam_activate_cron() {
    if ( ! wp_next_scheduled( 'wpteam_daily_create_post' ) ) {
        wp_schedule_event( time(), 'daily', 'wpteam_daily_create_post' );
    }
}
register_activation_hook( __FILE__, 'wpteam_activate_cron' );

function wpteam_deactivate_cron() {
    wp_clear_scheduled_hook( 'wpteam_daily_create_post' );
}
register_deactivation_hook( __FILE__, 'wpteam_deactivate_cron' );

Этот код гарантирует, что задача будет запущена ежедневно и отменена при деактивации плагина.

Реализация функции создания записи

Теперь определим функцию, которая создаёт новый пост:

add_action( 'wpteam_daily_create_post', 'wpteam_create_daily_post' );
function wpteam_create_daily_post() {
    $new_post = array(
        'post_title'    => 'Автоматически созданная запись ' . date('Y-m-d'),
        'post_content'  => 'Это содержание создано автоматически через WP-Cron.',
        'post_status'   => 'publish',
        'post_author'   => 1,
        'post_category' => array(1),
    );
    wp_insert_post( $new_post );
}

Как видите, функция формирует массив с параметрами записи и вставляет её в базу через wp_insert_post.

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

Теперь рассмотрим, как удалять записи автоматически, например, все записи старше 30 дней.

Создание задачи удаления

Аналогично создаём cron-задачу при активации:

function wpteam_activate_delete_cron() {
    if ( ! wp_next_scheduled( 'wpteam_daily_delete_old_posts' ) ) {
        wp_schedule_event( time(), 'daily', 'wpteam_daily_delete_old_posts' );
    }
}
register_activation_hook( __FILE__, 'wpteam_activate_delete_cron' );

function wpteam_deactivate_delete_cron() {
    wp_clear_scheduled_hook( 'wpteam_daily_delete_old_posts' );
}
register_deactivation_hook( __FILE__, 'wpteam_deactivate_delete_cron' );

Реализация функции удаления

Функция для удаления записей старше 30 дней может выглядеть так:

add_action( 'wpteam_daily_delete_old_posts', 'wpteam_delete_old_posts' );
function wpteam_delete_old_posts() {
    $args = array(
        'date_query' => array(
            array(
                'before' => '30 days ago',
            ),
        ),
        'post_type'      => 'post',
        'post_status'    => 'publish',
        'posts_per_page' => -1,
        'fields'         => 'ids',
    );
    $query = new WP_Query( $args );
    if ( $query->have_posts() ) {
        foreach ( $query->posts as $post_id ) {
            wp_delete_post( $post_id, true ); // true — удаление без корзины
        }
    }
}

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

Рекомендации по использованию плагинов для WP-Cron

Хотя код выше поможет реализовать нужный функционал, для управления расписанием и отладки WP-Cron можно использовать плагины:

  • WP Crontrol — позволяет просматривать, редактировать и запускать cron-задачи вручную.
  • Clearfy Pro — оптимизирует работу WP и имеет расширенные настройки для WP-Cron.

Использование таких инструментов помогает избежать ошибок и контролировать автоматизацию.

Советы по отладке и производительности WP-Cron

Если задачи не выполняются вовремя, проверьте:

  • Посещаемость сайта — WP-Cron срабатывает при заходе на сайт.
  • Не конфликтуют ли другие плагины с WP-Cron.
  • Логируйте выполнение задач, добавляя в функции запись в файл через error_log или собственный лог.

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

Как создать автоматический импорт данных из Google Forms в WordPress
08.02.2026
Автоматический экспорт постов WordPress в PDF: пошаговое руководство
05.01.2026
Как удалить постоянные редиректы в WordPress
28.03.2026
Автоматическое отключение плагинов на отдельных страницах WordPress для оптимизации
07.04.2026
Как удалить старые ревизии постов WordPress для оптимизации базы данных
01.01.2026

Возникли задачи по WP? Вы можете задать свой вопрос на FAQwp.com Либо обратиться к специалистам поддержки.