В процессе ведения сайта на WordPress часто возникает необходимость автоматически создавать черновики для последующей доработки или же удалять устаревшие и неактивные черновики, чтобы не захламлять базу данных. В этой статье рассмотрим, как можно реализовать автоматизацию создания и удаления черновиков с помощью кода и плагинов, а также разберём популярные сценарии применения.
Зачем нужна автоматизация работы с черновиками в WordPress?
Черновики в WordPress — это незавершённые записи, которые не видны посетителям сайта. Автоматизация работы с ними помогает:
- организовать процесс подготовки контента, создавая шаблоны и заготовки;
- очищать базу данных от старых неиспользуемых черновиков, улучшая производительность;
- управлять большим объёмом контента при работе нескольких авторов;
- интегрировать контент с внешними сервисами и автоматически сохранять промежуточные версии.
Теперь рассмотрим, как на практике решать эти задачи.
Автоматическое создание черновиков с помощью кода
Создание шаблона черновика через WP REST API
Допустим, нужно по расписанию создавать заготовку статьи с определёнными полями, чтобы авторы просто дополняли её. Для этого можно использовать следующий пример кода, который создаёт черновик с заданным заголовком и контентом:
function wpcodes_create_scheduled_draft() {
$post_data = array(
'post_title' => 'Шаблон новой статьи',
'post_content' => 'Добавьте сюда основной текст статьи...',
'post_status' => 'draft',
'post_author' => 1,
'post_type' => 'post',
);
// Проверяем, не создан ли уже такой черновик
$existing = get_posts(array(
'post_type' => 'post',
'post_status' => 'draft',
'title' => 'Шаблон новой статьи'
));
if (empty($existing)) {
wp_insert_post($post_data);
}
}
// Запускаем по расписанию каждую неделю
if (!wp_next_scheduled('wpcodes_create_draft_hook')) {
wp_schedule_event(time(), 'weekly', 'wpcodes_create_draft_hook');
}
add_action('wpcodes_create_draft_hook', 'wpcodes_create_scheduled_draft');
Такой код добавьте в файл functions.php вашей темы или в отдельный плагин. Он будет создавать шаблонный черновик раз в неделю, если он ещё не создан.
Использование плагинов для автоматизации создания черновиков
Если предпочитаете готовые решения, обратите внимание на плагины:
- Auto Draft Cleaner — помогает управлять черновиками, включая автоматическое удаление;
- Expert Review — расширенный плагин для управления контентом и черновиками с возможностью кастомизации.
Они позволят значительно упростить процесс без необходимости писать код.
Автоматическое удаление черновиков: как не захламлять базу
Почему важно удалять старые черновики
Накопление черновиков, особенно на больших сайтах, может приводить к увеличению размера базы данных и замедлению работы админ-панели. Поэтому важно периодически удалять неактуальные черновики.
Реализация удаления черновиков по времени с помощью кода
Ниже пример функции, которая удаляет черновики старше 30 дней. Добавьте этот код в functions.php или в плагин:
function wpcodes_delete_old_drafts() {
global $wpdb;
$days = 30;
$date_threshold = date('Y-m-d H:i:s', strtotime("-{$days} days"));
$drafts = $wpdb->get_col($wpdb->prepare(
"SELECT ID FROM {$wpdb->posts} WHERE post_status = 'draft' AND post_date < %s",
$date_threshold
));
if (!empty($drafts)) {
foreach ($drafts as $draft_id) {
wp_delete_post($draft_id, true); // true — удалять безвозвратно
}
}
}
// Запускаем очистку раз в сутки
if (!wp_next_scheduled('wpcodes_delete_old_drafts_hook')) {
wp_schedule_event(time(), 'daily', 'wpcodes_delete_old_drafts_hook');
}
add_action('wpcodes_delete_old_drafts_hook', 'wpcodes_delete_old_drafts');
Этот код ежесуточно удаляет черновики старше 30 дней, освобождая базу.
Использование плагина Clearfy Pro для управления черновиками
Плагин Clearfy Pro имеет функцию управления мусорными записями, в том числе черновиками. Он позволяет настроить автоматическую очистку, а также отключить создание автосохранений, что полезно для оптимизации.
Дополнительные советы и лайфхаки по работе с черновиками
Добавление кастомных полей в черновики
Если ваши черновики должны содержать дополнительные метаданные (например, дату публикации, категории или комментарии редакторов), используйте функцию update_post_meta при создании записи:
function wpcodes_create_draft_with_meta() {
$post_id = wp_insert_post(array(
'post_title' => 'Заготовка с метаданными',
'post_status' => 'draft',
'post_type' => 'post'
));
if ($post_id) {
update_post_meta($post_id, '_wpcodes_review_status', 'pending');
update_post_meta($post_id, '_wpcodes_editor_notes', 'Добавьте ваши комментарии здесь');
}
}
Это поможет структурировать работу с черновиками.
Автоматизация уведомлений об обновлениях черновиков
Для командной работы полезно уведомлять редакторов о новых или изменённых черновиках. Можно использовать хуки transition_post_status для отправки email или интеграции с мессенджерами. Пример:
function wpcodes_notify_on_draft_update($new_status, $old_status, $post) {
if ($new_status === 'draft' && $old_status !== 'draft' && $post->post_type === 'post') {
wp_mail('editor@example.com', 'Обновлён черновик', 'Проверьте новый черновик: ' . get_edit_post_link($post->ID));
}
}
add_action('transition_post_status', 'wpcodes_notify_on_draft_update', 10, 3);
Это простой способ держать команду в курсе.
Заключение
Автоматизация создания и удаления черновиков в WordPress — эффективный способ оптимизировать рабочий процесс и поддерживать чистоту базы данных. Используйте встроенные хуки, WP Cron и проверенные плагины (например, Clearfy Pro и Expert Review), чтобы сделать управление контентом удобным и продуктивным.