В процессе работы с WordPress у многих сайтов накапливается множество черновиков (drafts), которые со временем перестают быть актуальными. Накопление таких записей может замедлять работу сайта, увеличивать нагрузку на базу данных и затруднять администрирование. В этой статье подробно рассмотрим, как настроить автоматическое удаление старых черновиков в WordPress с помощью кода и плагинов, чтобы поддерживать чистоту и производительность сайта.
Почему важно удалять старые черновики в WordPress
Черновики — это записи, которые вы начали создавать, но не опубликовали. Они сохраняются в базе данных, занимая место и ресурсы. Особенно это критично для крупных сайтов с большим количеством авторов и периодической публикацией контента. Вот основные причины, почему стоит регулярно удалять старые черновики:
- Оптимизация базы данных: Меньшее количество записей — меньше запросов и быстрее отклик.
- Улучшение производительности: Меньше данных — быстрее загрузка административной части и фронтенда.
- Упрощение администрирования: Чистая панель управления без лишнего мусора.
Способы автоматического удаления старых черновиков
Существует несколько подходов для автоматической очистки черновиков. Рассмотрим самые эффективные и простые.
1. Использование WP-Cron для удаления черновиков старше заданного срока
WP-Cron — встроенный механизм планировщика задач в WordPress. С его помощью можно запускать функцию удаления черновиков по расписанию. Ниже приведён пример реализации.
function wpmanager_delete_old_drafts() {
global $wpdb;
// Удаляем черновики старше 30 дней
$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); // true — принудительное удаление без попадания в корзину
}
}
// Регистрируем событие, если оно ещё не зарегистрировано
if (!wp_next_scheduled('wpmanager_daily_delete_old_drafts')) {
wp_schedule_event(time(), 'daily', 'wpmanager_daily_delete_old_drafts');
}
// Подключаем функцию к крону
add_action('wpmanager_daily_delete_old_drafts', 'wpmanager_delete_old_drafts');
Этот код можно добавить в файл functions.php вашей темы или создать небольшой плагин. Он будет запускаться раз в сутки и удалять черновики старше 30 дней.
2. Использование плагина Clearfy Pro для автоматизации оптимизации
Плагин Clearfy Pro предлагает удобный интерфейс для оптимизации базы данных, включая удаление старых черновиков и ревизий. Это решение подходит тем, кто хочет избежать ручного кода и получить дополнительные инструменты для ускорения сайта.
Преимущества Clearfy Pro:
- Удаление черновиков, ревизий, спама и корзины одним кликом.
- Автоматизация очистки по расписанию.
- Настраиваемые параметры удаления с удобным интерфейсом.
Как доработать функцию для ваших нужд
Если вам нужно удалять черновики, но не все подряд, можно добавить дополнительные условия. Например, исключить определённые категории или авторов.
function wpmanager_delete_old_drafts_custom() {
global $wpdb;
$days = 30;
$date = date('Y-m-d H:i:s', strtotime('-' . $days . ' days'));
// Получаем ID черновиков старше 30 дней, кроме автора с ID 1
$drafts = $wpdb->get_col($wpdb->prepare(
"SELECT ID FROM {$wpdb->posts} WHERE post_status = 'draft' AND post_date < %s AND post_author != %d",
$date,
1
));
foreach ($drafts as $draft_id) {
wp_delete_post($draft_id, true);
}
}
add_action('wpmanager_daily_delete_old_drafts', 'wpmanager_delete_old_drafts_custom');
Такой подход даёт гибкость в управлении контентом и позволяет сохранить нужные черновики.
Проверка и отладка работы автоматического удаления
После внедрения автоматического удаления важно проверить, что всё работает корректно:
- Проверьте, что событие WP-Cron зарегистрировано: с помощью плагинов типа WP Crontrol.
- Запустите функцию вручную, чтобы убедиться, что черновики удаляются только по нужным условиям.
- Просмотрите логи ошибок сервера на предмет возможных проблем.
- Настройте резервное копирование базы данных перед внедрением автоматического удаления.
Заключение
Автоматическое удаление старых черновиков — простой, но мощный способ оптимизировать WordPress сайт. С помощью WP-Cron и небольших функций на PHP можно существенно снизить нагрузку на базу данных и сделать администрирование удобнее. Если хочется получить больше возможностей и удобства, рекомендую обратить внимание на плагин Clearfy Pro.