В этой статье мы подробно рассмотрим, как настроить автоматическое создание и удаление записей в WordPress по расписанию. Такая функциональность полезна для сайтов с временным контентом, акциями, событиями и другими типами записей, которые должны появляться и исчезать без ручного вмешательства.
Что такое WP Cron и почему он нужен для автоматизации
WP Cron — встроенная в WordPress система планировщика задач, которая позволяет выполнять заданные функции по расписанию. В отличие от системного cron на сервере, WP Cron срабатывает при посещении сайта, что накладывает некоторые ограничения, но при этом не требует доступа к серверу.
Для автоматического создания и удаления записей мы будем использовать WP Cron для задания повторяющихся и однократных задач.
Чтобы проверить зарегистрированные задачи, можно использовать плагин WP Crontrol. Он удобен для отладки и управления расписанием.
Автоматическое создание записей: пример кода и пояснения
Чтобы автоматически создавать записи по расписанию, нужно:
- Зарегистрировать событие с помощью
wp_schedule_event - Создать функцию, которая будет создавать запись через
wp_insert_post - Привязать функцию к событию
Пример кода для создания записи каждую неделю:
function wpaddons_schedule_create_post() {
if ( ! wp_next_scheduled( 'wpaddons_create_weekly_post' ) ) {
wp_schedule_event( time(), 'weekly', 'wpaddons_create_weekly_post' );
}
}
add_action( 'wp', 'wpaddons_schedule_create_post' );
function wpaddons_create_post_function() {
$post_data = array(
'post_title' => 'Автоматическая запись '.date('d.m.Y'),
'post_content' => 'Это автоматически созданная запись по расписанию.',
'post_status' => 'publish',
'post_author' => 1,
'post_type' => 'post',
);
wp_insert_post( $post_data );
}
add_action( 'wpaddons_create_weekly_post', 'wpaddons_create_post_function' );В этом коде при каждом посещении сайта проверяется наличие запланированного события. Если его нет, оно создаётся. Затем по расписанию каждую неделю вызывается функция, которая создаёт новую запись с текущей датой в заголовке.
Как изменить расписание и тип записи
Функция wp_schedule_event принимает следующие стандартные интервалы: hourly, twicedaily, daily, weekly. Если нужно другое расписание, можно зарегистрировать собственный интервал через фильтр cron_schedules.
Тип записи в массиве $post_data можно изменить на page или любой кастомный тип, зарегистрированный на сайте.
Автоматическое удаление записей по условию
Чтобы автоматически удалять записи, например, старше определённого времени, можно создать задачу, которая будет искать такие записи и удалять их.
Пример функции для удаления записей старше 30 дней:
function wpaddons_delete_old_posts() {
$args = array(
'post_type' => 'post',
'post_status' => 'publish',
'date_query' => array(
array(
'before' => '30 days ago',
),
),
'posts_per_page' => -1,
);
$old_posts = get_posts( $args );
foreach ( $old_posts as $post ) {
wp_delete_post( $post->ID, true );
}
}
if ( ! wp_next_scheduled( 'wpaddons_delete_old_posts_hook' ) ) {
wp_schedule_event( time(), 'daily', 'wpaddons_delete_old_posts_hook' );
}
add_action( 'wpaddons_delete_old_posts_hook', 'wpaddons_delete_old_posts' );Эта функция каждый день запускается по расписанию, выбирает записи старше 30 дней и удаляет их без возможности восстановления (true в параметрах wp_delete_post означает безвозвратное удаление).
Как настроить удаление для кастомных типов и других условий
В аргументах get_posts можно менять post_type, добавлять таксономии, мета-запросы или другие условия, чтобы более точно выбрать записи для удаления.
Если нужно не удалять записи, а переводить их в статус черновика или в корзину, можно заменить wp_delete_post на wp_update_post с нужным статусом.
Практические рекомендации и использование плагинов
Для управления задачами WP Cron удобно использовать плагин WP Crontrol. Он позволяет просматривать, добавлять и удалять задачи без кода.
Если вы используете плагин Clearfy Pro, там есть расширенные инструменты для оптимизации и управления задачами WP Cron, что удобно для крупных проектов.
Использование автоматизации по расписанию помогает экономить время, снижать нагрузку на админов и поддерживать актуальность контента без постоянного ручного контроля.
Заключение
Автоматическое создание и удаление записей в WordPress по расписанию — мощный инструмент для эффективного управления контентом. Используя WP Cron, вы можете реализовать гибкие сценарии обновления сайта, адаптированные под ваши задачи. В статье приведены рабочие примеры кода, которые можно адаптировать под свои нужды.