Отложенная публикация постов — удобная функция для блогеров, редакторов и владельцев сайтов на WordPress. Она позволяет подготовить материал заранее и настроить дату и время его автоматического выхода. В этой статье разберём наиболее популярные способы реализовать отложенную публикацию, рассмотрим плагины и напишем пример собственного решения с кодом.
Почему важна отложенная публикация: задачи и преимущества
Отложенная публикация помогает:
- Планировать контент заранее и поддерживать постоянный график публикаций.
- Автоматизировать выход материалов в нужное время без ручного вмешательства.
- Согласовывать публикации в команде редакторов.
- Избегать ошибок публикации в неподходящее время.
Для владельцев новостных и тематических сайтов (например, на wpnews.ru) это особенно важно — новости или обзоры должны выходить своевременно, а редакторы могут не быть онлайн в момент публикации.
Использование стандартных возможностей WordPress для отложенной публикации
WordPress изначально поддерживает отложенную публикацию. При создании или редактировании записи в блоке «Опубликовать» можно выбрать дату и время публикации. Однако этот функционал ограничен:
- Можно настроить только один момент публикации, без повторений.
- Нет удобного управления очередью отложенных постов.
- Нет возможности массового изменения времени публикации.
Если вас устраивает базовый функционал, просто при создании поста нажмите на «Опубликовать сразу» и выберите необходимое время.
Плагины для расширенной отложенной публикации и планирования контента
1. Schedule Posts Calendar
Плагин добавляет удобный календарь, в котором можно видеть и управлять всеми запланированными публикациями. Поддерживает быстрое изменение даты и времени публикации с помощью drag-and-drop.
Скачать Schedule Posts Calendar
2. Editorial Calendar
Очень популярный и простой в использовании инструмент для планирования публикаций. Предоставляет визуальный календарь с возможностью управления постами, черновиками, отложенными записями.
3. WP Scheduled Posts
Универсальный плагин с большим количеством функций: календарь, очередь публикаций, уведомления редакторам, автоматическое назначение времени публикации.
Плагин доступен в бесплатной версии и Pro с дополнительными возможностями.
Как написать собственную функцию для отложенной публикации в WordPress
Рассмотрим пример минимальной реализации отложенной публикации через собственный код. В этом случае мы создадим функцию, которая позволит программно установить дату публикации поста, а также реализуем простой крон-задачу, которая будет публиковать посты в нужное время.
Шаг 1. Установка даты публикации программно
Для создания или обновления поста с отложенной датой используем функцию wpnews_set_post_schedule:
function wpnews_set_post_schedule($post_id, $datetime) {
// $datetime — строка формата 'Y-m-d H:i:s'
$post_data = array(
'ID' => $post_id,
'post_status' => 'future', // статус "запланировано"
'post_date' => $datetime,
'post_date_gmt' => get_gmt_from_date($datetime),
);
wp_update_post($post_data);
}Использование:
$post_id = 123;
$publish_time = '2024-07-01 10:00:00';
wpnews_set_post_schedule($post_id, $publish_time);Эта функция переведёт пост в статус "будущая публикация" с назначенной датой.
Шаг 2. Создание крон-задачи для проверки и публикации постов
Иногда стандартный WP-Cron может не срабатывать точно, особенно на сайтах с низкой посещаемостью. Можно создать дополнительную функцию, которая будет запускаться по расписанию и публиковать посты, если они просрочены:
function wpnews_publish_scheduled_posts() {
$args = array(
'post_status' => 'future',
'post_type' => 'post',
'date_query' => array(
array('before' => current_time('mysql'))
),
'fields' => 'ids',
'posts_per_page' => 10,
);
$posts = get_posts($args);
foreach ($posts as $post_id) {
// Меняем статус на 'publish'
$post = array(
'ID' => $post_id,
'post_status' => 'publish'
);
wp_update_post($post);
}
}
// Регистрируем событие, если оно не зарегистрировано
if (!wp_next_scheduled('wpnews_cron_publish')) {
wp_schedule_event(time(), 'hourly', 'wpnews_cron_publish');
}
add_action('wpnews_cron_publish', 'wpnews_publish_scheduled_posts');Этот код проверяет все отложенные публикации с датой меньше текущей и переводит их в статус "опубликовано".
Управление очередью отложенных публикаций и уведомления
Для сайтов с большими объёмами контента важно не только отложить публикацию, но и иметь удобные инструменты для управления очередью. Плагины, рассмотренные выше, предоставляют такие возможности. Также можно добавить уведомления редакторам по email о предстоящих публикациях:
function wpnews_notify_before_publish() {
$args = array(
'post_status' => 'future',
'post_type' => 'post',
'date_query' => array(
array(
'after' => date('Y-m-d H:i:s', strtotime('+1 hour', current_time('timestamp'))),
'before' => date('Y-m-d H:i:s', strtotime('+2 hours', current_time('timestamp'))),
'inclusive' => true,
)
),
'fields' => 'ids',
);
$posts = get_posts($args);
if (!empty($posts)) {
$message = "Публикации, запланированные на ближайший час:\n";
foreach ($posts as $post_id) {
$post = get_post($post_id);
$message .= $post->post_title . " - " . get_permalink($post_id) . "\n";
}
wp_mail('editor@example.com', 'Предстоящие публикации', $message);
}
}
add_action('wpnews_cron_publish', 'wpnews_notify_before_publish');Вы можете заменить email на адрес редактора или использовать динамическую рассылку.
Интеграция с плагином Clearfy Pro для оптимизации публикаций
Если у вас установлен Clearfy Pro, вы можете дополнительно оптимизировать процесс публикации, используя встроенные инструменты для управления задачами и автоматизации.
Clearfy позволяет гибко работать с WP-Cron, что улучшит точность и надёжность отложенных публикаций, а также снизит нагрузку на сервер.
Итоговые рекомендации по отложенной публикации в WordPress
Для большинства пользователей базового функционала WordPress будет достаточно. Если вам нужна удобная визуальная очередь — выбирайте плагины Editorial Calendar или WP Scheduled Posts.
Для уникальных задач — используйте собственный код, который можно дополнить крон-задачами и уведомлениями, как показано выше. Такой подход даёт полный контроль и позволяет интегрировать отложенную публикацию в сложные бизнес-процессы.
Обязательно тестируйте работу отложенной публикации на тестовом сайте, чтобы избежать ошибок и неожиданных сбоев.