Как отложить публикацию постов в WordPress

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

Отложенная публикация в WordPress: встроенный функционал

WordPress по умолчанию поддерживает отложенную публикацию. Чтобы воспользоваться этой функцией, при создании или редактировании записи достаточно в блоке Опубликовать кликнуть на ссылку рядом с датой «Сразу» и установить нужное время и дату публикации.

После установки даты и времени кнопка Опубликовать изменится на Запланировать. После нажатия запись перейдёт в статус «Запланирована» и автоматически опубликуется в указанное время.

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

Плагины для отложенной публикации постов в WordPress

1. PublishPress Future

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

Особенности:

  • Массовое изменение даты публикации;
  • Поддержка всех типов записей;
  • Автоматическое снятие публикации;
  • Удобный интерфейс.

Установить его можно из репозитория WordPress. Подробнее на странице плагина.

2. Schedule Posts Calendar

Этот плагин добавляет календарь для визуального управления запланированными постами. Удобно для контроля и изменения даты публикации прямо на календаре.

Преимущества:

  • Визуальный календарь;
  • Drag & drop для переноса дат;
  • Поддержка кастомных типов записей.

Подробнее и скачивание: Schedule Posts Calendar.

Как программно отложить публикацию поста в WordPress

Иногда нужно программно создавать записи с отложенной публикацией или менять дату уже существующих постов. Для этого используется параметр post_date и post_date_gmt при создании или обновлении записи через функцию wp_insert_post или wp_update_post.

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

function wpkey_set_scheduled_post($title, $content, $schedule_datetime) {
    $post_data = array(
        'post_title'    => $title,
        'post_content'  => $content,
        'post_status'   => 'future', // статус запланированной публикации
        'post_author'   => get_current_user_id(),
        'post_type'     => 'post',
        'post_date'     => $schedule_datetime,
        'post_date_gmt' => get_gmt_from_date($schedule_datetime),
    );

    $post_id = wp_insert_post($post_data);
    if (is_wp_error($post_id)) {
        return false;
    }
    return $post_id;
}

Вызов функции:

$scheduled_post_id = wpkey_set_scheduled_post('Тестовая отложенная запись', 'Содержимое записи', '2024-07-01 10:00:00');
if ($scheduled_post_id) {
    echo 'Запись успешно запланирована, ID: ' . $scheduled_post_id;
} else {
    echo 'Ошибка при планировании записи';
}

Функция принимает дату в формате «Y-m-d H:i:s» по локальному времени и устанавливает статус записи future, что означает отложенную публикацию.

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

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

Пример функции wpkey_shift_posts_schedule, которая сдвигает дату публикации всех опубликованных постов на заданное количество дней:

function wpkey_shift_posts_schedule($days_shift = 1) {
    $args = array(
        'post_type'      => 'post',
        'post_status'    => 'publish',
        'posts_per_page' => -1,
    );

    $posts = get_posts($args);
    foreach ($posts as $post) {
        $old_date = $post->post_date;
        $new_date = date('Y-m-d H:i:s', strtotime($old_date . " +{$days_shift} days"));
        $new_date_gmt = get_gmt_from_date($new_date);

        wp_update_post(array(
            'ID' => $post->ID,
            'post_date' => $new_date,
            'post_date_gmt' => $new_date_gmt,
        ));
    }
}

Просто вызовите wpkey_shift_posts_schedule(3);, чтобы сдвинуть все даты публикаций на 3 дня вперёд.

Автоматизация и планирование публикаций с помощью WP Cron

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

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

function wpkey_custom_scheduled_event() {
    // Получаем записи со статусом future, срок публикации которых наступил
    $args = array(
        'post_status' => 'future',
        'post_type' => 'post',
        'date_query' => array(
            array(
                'column' => 'post_date',
                'before' => current_time('mysql'),
            ),
        ),
    );

    $posts = get_posts($args);

    foreach ($posts as $post) {
        // Меняем статус на publish
        wp_publish_post($post->ID);
    }
}

// Регистрируем событие, если оно не зарегистрировано
if (!wp_next_scheduled('wpkey_custom_cron_hook')) {
    wp_schedule_event(time(), 'hourly', 'wpkey_custom_cron_hook');
}
add_action('wpkey_custom_cron_hook', 'wpkey_custom_scheduled_event');

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

Резюме по отложенной публикации постов в WordPress

Отложенная публикация — важный инструмент для профессионального ведения сайта на WordPress. Встроенный функционал подходит для большинства задач, но для массовых операций, более тонкой настройки или автоматизации рекомендую использовать плагины PublishPress Future или Schedule Posts Calendar.

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

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

WooCommerce: автоматическое изменение статуса заказа при отмене оплаты
31.05.2026
Как запустить WordPress без PHP: практическое руководство по Headless CMS
21.03.2026
WooCommerce: решение проблемы, когда не отображаются способы оплаты при оформлении заказа
07.05.2026
Как добавить пользовательские поля в формы WordPress
04.11.2025
Как отложить публикацию постов в WordPress
01.01.2026

Ресурс в разработке, скоро здесь будет сайт по вордпресс