Управление черновиками в WordPress — важный аспект администрирования сайта, особенно если контент создаётся командой или регулярно обновляется. Часто возникает необходимость автоматически создавать черновики для планирования публикаций, а также удалять устаревшие или ненужные черновики для поддержания чистоты базы данных и удобства работы.
Почему важна автоматизация черновиков в WordPress
Ручное создание и удаление черновиков может отнимать много времени и приводить к ошибкам. Автоматизация позволяет:
- Снизить нагрузку на редакторов и авторов;
- Поддерживать порядок в списке записей;
- Обеспечить своевременное удаление устаревших черновиков;
- Автоматически создавать заготовки для публикаций по расписанию или событию.
Рассмотрим, как реализовать эти задачи с помощью кода и полезных плагинов.
Автоматическое создание черновиков: практические примеры
Вы можете создавать черновики программно, например, для регулярных публикаций или для подготовки шаблонов. Пример функции для wpnote_create_draft, которая создаёт черновик с заданным заголовком и содержимым:
function wpnote_create_draft($title, $content = '') {
$draft = array(
'post_title' => $title,
'post_content' => $content,
'post_status' => 'draft',
'post_author' => get_current_user_id(),
'post_type' => 'post',
);
$post_id = wp_insert_post($draft);
return $post_id;
}
Пример использования — автоматическое создание черновика для еженедельной рубрики:
add_action('wp_loaded', function() {
if (!get_option('wpnote_weekly_draft_created')) {
wpnote_create_draft('Еженедельный обзор');
update_option('wpnote_weekly_draft_created', 1);
}
});
Для более сложных сценариев можно использовать WP-Cron, чтобы создавать черновики по расписанию.
Создание черновиков по расписанию через WP-Cron
Добавим задачу, которая будет запускаться раз в неделю и создавать черновик:
function wpnote_schedule_weekly_draft() {
if (!wp_next_scheduled('wpnote_weekly_draft_event')) {
wp_schedule_event(time(), 'weekly', 'wpnote_weekly_draft_event');
}
}
add_action('wp', 'wpnote_schedule_weekly_draft');
add_action('wpnote_weekly_draft_event', function() {
wpnote_create_draft('Еженедельный обзор от ' . date('d.m.Y'));
});
WP-Cron автоматически обработает создание черновика каждую неделю.
Автоматическое удаление черновиков: очистка базы и поддержание порядка
Черновики могут накапливаться, занимать место и создавать хаос. Удаление устаревших черновиков поможет избежать этого.
Удаление черновиков старше 30 дней
Пример функции wpnote_delete_old_drafts, которая удаляет черновики старше 30 дней:
function wpnote_delete_old_drafts() {
global $wpdb;
$days = 30;
$date = 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
));
foreach ($drafts as $draft_id) {
wp_delete_post($draft_id, true);
}
}
// Запускаем по расписанию - раз в день
if (!wp_next_scheduled('wpnote_daily_delete_drafts')) {
wp_schedule_event(time(), 'daily', 'wpnote_daily_delete_drafts');
}
add_action('wpnote_daily_delete_drafts', 'wpnote_delete_old_drafts');
Этот код удаляет все черновики старше 30 дней ежедневно, помогая держать базу данных в порядке.
Плагины для автоматизации управления черновиками
Если вы предпочитаете использовать готовые решения, рекомендую обратить внимание на следующие плагины:
- Clearfy Pro — содержит функции оптимизации базы данных, в том числе очистку черновиков;
- My Popup — позволяет создавать всплывающие уведомления, которые можно использовать для напоминаний и управления контентом;
- WPRemark — автоматизация отзывов, но также подходит для работы с пользовательским контентом и черновиками.
Эти плагины можно адаптировать для автоматизации задач по созданию и удалению черновиков с минимальными усилиями.
Советы по безопасной автоматизации
При автоматизации управления черновиками важно соблюдать несколько правил:
- Всегда делайте резервные копии базы данных перед массовым удалением записей;
- Тестируйте код на тестовом сайте;
- Используйте WP-Cron для регулярных задач, избегая запуска тяжелых операций при каждой загрузке страницы;
- Логируйте действия автоматизации для последующего анализа;
- При необходимости добавляйте уведомления для администраторов о выполненных действиях.
Расширение функционала: создание черновиков с метаданными и таксономиями
Иногда нужно создавать черновики с определёнными метаданными или категориями. Вот пример расширенной функции:
function wpnote_create_draft_with_meta($title, $content = '', $meta = [], $categories = []) {
$draft = array(
'post_title' => $title,
'post_content' => $content,
'post_status' => 'draft',
'post_author' => get_current_user_id(),
'post_type' => 'post',
'post_category' => $categories,
);
$post_id = wp_insert_post($draft);
if ($post_id && !is_wp_error($post_id)) {
foreach ($meta as $key => $value) {
update_post_meta($post_id, $key, $value);
}
}
return $post_id;
}
Так можно создавать черновики с нужной категорией и дополнительными параметрами, что удобно для автоматизированных процессов.