Автоматические черновики — это промежуточные сохранения постов, которые WordPress создаёт при работе с редактором. Они помогают не потерять изменения, но со временем их количество может значительно вырасти и занимать место в базе данных, замедляя работу сайта. Особенно это актуально для больших проектов с множеством авторов и частым редактированием контента.
Что такое автоматические черновики и почему их нужно удалять
Автоматический черновик (auto-draft) создаётся, когда пользователь начинает создавать пост или страницу, но ещё не сохранил изменения вручную. WordPress периодически сохраняет такие версии для предотвращения потери данных. Со временем эти записи накапливаются, особенно если пользователи часто начинают создавать посты, но не заканчивают их.
Накопление автоматических черновиков приводит к:
- увеличению размера базы данных;
- замедлению запросов к базе данных;
- затруднённому управлению контентом в админке;
- повышенной нагрузке на сервер при резервном копировании и оптимизации.
Поэтому важно регулярно удалять устаревшие автоматические черновики, особенно если они не используются.
Удаление автоматических черновиков вручную и через плагины
В админке WordPress по умолчанию нет удобного способа массового удаления автоматических черновиков. Можно вручную удалить такие записи через раздел "Все записи", фильтруя по типу «Автосохранения» и удаляя их, но это неудобно и неэффективно.
Для автоматизации процесса можно использовать плагины:
- WP-Optimize — популярный плагин для очистки и оптимизации базы данных, который умеет удалять автоматические черновики и другие мусорные данные;
- Advanced Database Cleaner — более продвинутый инструмент с возможностью настройки расписания очистки;
- Clearfy Pro — плагин с множеством оптимизаций, включая удаление неиспользуемых черновиков и мусорных данных.
Однако использование плагинов не всегда оправдано, если нужно точечное и контролируемое удаление. Лучше использовать кастомные решения на PHP.
Автоматическое удаление автоматических черновиков по расписанию через код
Для регулярного удаления автоматических черновиков можно использовать WP-Cron — встроенную систему планирования задач в WordPress. Ниже пример реализации функции и регистрации задачи, которая будет очищать базу от авто-черновиков раз в сутки.
function wp1_delete_auto_drafts() {
global $wpdb;
// Удаляем записи с post_status = 'auto-draft'
$deleted = $wpdb->query(
"DELETE FROM {$wpdb->posts} WHERE post_status = 'auto-draft'"
);
if (false !== $deleted) {
error_log('WP-1: удалено ' . $deleted . ' автоматических черновиков');
}
}
// Хук для события cron
add_action('wp1_daily_auto_drafts_cleanup', 'wp1_delete_auto_drafts');
// Регистрация планирования задачи при активации темы или плагина
function wp1_schedule_auto_drafts_cleanup() {
if (!wp_next_scheduled('wp1_daily_auto_drafts_cleanup')) {
wp_schedule_event(time(), 'daily', 'wp1_daily_auto_drafts_cleanup');
}
}
add_action('wp', 'wp1_schedule_auto_drafts_cleanup');
// Очистка расписания при деактивации
function wp1_clear_auto_drafts_cleanup_schedule() {
$timestamp = wp_next_scheduled('wp1_daily_auto_drafts_cleanup');
if ($timestamp) {
wp_unschedule_event($timestamp, 'wp1_daily_auto_drafts_cleanup');
}
}Объяснение кода:
- Функция
wp1_delete_auto_draftsвыполняет SQL-запрос на удаление всех записей с post_status = 'auto-draft'. Это самый эффективный способ. - Задача
wp1_daily_auto_drafts_cleanupпривязывается к событию WP-Cron. - Функция
wp1_schedule_auto_drafts_cleanupпроверяет, запланирована ли уже задача, и если нет — ставит её на ежедневный запуск. - Для корректности нужно будет вызвать
wp1_clear_auto_drafts_cleanup_scheduleпри деактивации плагина или смене темы, чтобы убрать задачу из расписания.
Как настроить и проверить работу автоматической очистки
Чтобы проверить работу, можно вручную запустить крон-задачу с помощью плагина WP Crontrol или аналогичных средств. Также полезно смотреть логи ошибок, куда выводится количество удалённых записей.
Если на сайте много активных пользователей и большой трафик, стоит учитывать, что WP-Cron запускается при посещении сайта, и иногда задачи могут задерживаться. В таких случаях лучше настроить системный cron на сервере, вызывающий WP-Cron по URL.
Преимущества такого подхода:
- Минимальная нагрузка на сервер;
- Контроль над процессом удаления;
- Отсутствие необходимости устанавливать дополнительные плагины;
- Простота адаптации под другие типы записей или условия очистки.
Заключение
Регулярное удаление автоматических черновиков существенно улучшает производительность WordPress-сайта и облегчает управление контентом. Использование WP-Cron и кастомного кода позволяет автоматизировать этот процесс без привлечения сторонних плагинов. Для удобства можно комбинировать этот метод с плагинами оптимизации базы данных, например, Clearfy Pro, которые обеспечат комплексную чистку и оптимизацию.