Ведение сайта на WordPress часто требует частого создания черновиков для планирования контента, а также регулярного удаления устаревших или ненужных черновиков для поддержания базы данных в порядке. В этой статье мы подробно разберём, как автоматизировать эти процессы — создание и удаление черновиков — используя как собственный код, так и готовые плагины.
Почему важна автоматизация работы с черновиками в WordPress
В крупных и средних проектах количество черновиков может быстро расти, что замедляет работу админки и увеличивает размер базы данных. Автоматизация позволяет:
- Экономить время на рутинных операциях.
- Поддерживать базу данных в оптимальном состоянии.
- Сократить вероятность ошибок при ручном управлении черновиками.
Автоматизация особенно полезна для сайтов с большим количеством авторов, где контроль за черновиками усложнён.
Автоматическое создание черновиков: практические сценарии
Иногда нужно автоматически создавать черновики — например, для планирования публикаций или резервного копирования контента. Рассмотрим пример функции для автоматического создания черновика с заданным заголовком и содержимым.
Пример кода для создания черновика
function wpguest_create_auto_draft($title = 'Автоматический черновик', $content = '') {
$new_post = array(
'post_title' => $title,
'post_content' => $content,
'post_status' => 'draft',
'post_author' => get_current_user_id(),
'post_type' => 'post',
);
$post_id = wp_insert_post($new_post);
return $post_id;
}Эту функцию можно вызвать из хуков, например, при определённых условиях или по расписанию, чтобы создавать черновики автоматически.
Автоматизация с помощью WP-Cron
Чтобы создавать черновики регулярно, можно использовать встроенный в WordPress планировщик задач — WP-Cron. Вот пример, как добавить задачу на ежедневное создание черновика:
// Регистрация события при активации плагина или темы
if (!wp_next_scheduled('wpguest_daily_create_draft')) {
wp_schedule_event(time(), 'daily', 'wpguest_daily_create_draft');
}
// Хук для создания черновика
add_action('wpguest_daily_create_draft', function() {
wpguest_create_auto_draft('Ежедневный черновик от ' . date('Y-m-d'));
});Так вы получите новый черновик каждый день без участия пользователя.
Автоматическое удаление черновиков: зачем и как
Со временем в базе накапливается много старых черновиков, которые могут занимать место и замедлять работу сайта. Автоматическое удаление таких черновиков поможет поддерживать чистоту базы данных.
Удаление черновиков старше определённого срока
Ниже пример функции, которая удаляет все черновики старше заданного количества дней — например, 30:
function wpguest_delete_old_drafts($days_old = 30) {
global $wpdb;
$older_than = date('Y-m-d H:i:s', strtotime('-' . intval($days_old) . ' days'));
$drafts = $wpdb->get_results($wpdb->prepare(
"SELECT ID FROM {$wpdb->posts} WHERE post_status = 'draft' AND post_date < %s",
$older_than
));
foreach ($drafts as $draft) {
wp_delete_post($draft->ID, true); // true — удаляем без возможности восстановления
}
}Эту функцию также можно привязать к WP-Cron для регулярного запуска.
Настройка планировщика для удаления старых черновиков
// Планируем событие на еженедельное удаление
if (!wp_next_scheduled('wpguest_weekly_delete_old_drafts')) {
wp_schedule_event(time(), 'weekly', 'wpguest_weekly_delete_old_drafts');
}
// Хук для запуска удаления
add_action('wpguest_weekly_delete_old_drafts', function() {
wpguest_delete_old_drafts(30);
});Так вы гарантируете, что черновики старше 30 дней будут удаляться автоматически каждую неделю.
Готовые плагины для управления черновиками
Если вы предпочитаете не писать код, можно использовать плагины с похожим функционалом. Вот несколько примеров:
1. Auto Post Scheduler
Этот плагин автоматически публикует черновики, но его можно настроить и для удаления или переупорядочивания черновиков. Подробнее на Auto Post Scheduler на WPShop.
2. WP Bulk Delete
Позволяет массово удалять посты, включая черновики по разным условиям. Очень гибкий и простой в использовании. Подробнее: WP Bulk Delete на WPShop.
3. Clearfy Pro
Универсальный плагин для оптимизации WordPress, в числе функций есть управление и очистка черновиков и ревизий. Подробнее: Clearfy Pro на WPShop.
Советы по безопасности и производительности
При внедрении автоматического удаления черновиков важно:
- Делать резервные копии базы перед автоматическими операциями.
- Проверять логи на предмет ошибок выполнения скриптов.
- Не удалять черновики, если они используются или связаны с важными задачами.
- Использовать WP-Cron осторожно, учитывая, что он работает при посещении сайта, и лучше настроить системный cron для стабильности.
Также не забывайте тестировать код на тестовой среде перед применением на боевом сайте.