В WordPress часто накапливаются черновики записей, которые давно не обновлялись и не планируются к публикации. Такие черновики могут занимать место в базе данных, замедлять работу административной панели и создавать путаницу. В этой статье мы рассмотрим, как автоматически удалять старые черновики WordPress, используя как плагины, так и собственный код.
Почему стоит удалять старые черновики WordPress
Черновики — это полезная функция для сохранения промежуточных версий статей, но со временем их количество может превысить разумные пределы. Вот основные причины для удаления старых черновиков:
- Оптимизация базы данных: большое количество записей в статусе draft увеличивает размер таблиц wp_posts и wp_postmeta, что замедляет запросы.
- Упрощение админки: меньше мусора в списке постов — легче ориентироваться и управлять контентом.
- Повышение безопасности: иногда черновики содержат устаревшие данные или конфиденциальную информацию, которую не стоит хранить без надобности.
Удалять черновики вручную неудобно, особенно на больших сайтах. Автоматизация процесса решает эту проблему.
Удаление старых черновиков с помощью плагинов
Для автоматического удаления старых черновиков подходят разные плагины для оптимизации базы данных и управления контентом. Рассмотрим несколько популярных вариантов.
WP-Optimize
Плагин WP-Optimize позволяет очищать базу данных, включая удаление старых черновиков и ревизий. В настройках можно указать максимальный возраст черновиков для удаления.
Advanced Database Cleaner
Этот плагин также предлагает гибкие настройки для удаления устаревших черновиков. Можно настроить расписание очистки и исключения по типам записей.
WP Sweep
Простой и эффективный плагин для очистки базы от ненужных данных, включая черновики. Имеет удобный интерфейс и безопасные алгоритмы удаления.
Автоматическое удаление старых черновиков с помощью кода
Если вы предпочитаете не использовать плагины, можно добавить простой код в файл functions.php вашей темы или создать мини-плагин для автоматизации удаления черновиков. Ниже пример такого решения.
Пример функции для удаления черновиков старше 30 дней
function wpstuff_delete_old_drafts() {
global $wpdb;
$days = 30; // возраст черновиков в днях
$date_threshold = date('Y-m-d H:i:s', strtotime('-'. $days .' days'));
$drafts_to_delete = $wpdb->get_col($wpdb->prepare(
"SELECT ID FROM {$wpdb->posts} WHERE post_status = 'draft' AND post_date < %s",
$date_threshold
));
if (!empty($drafts_to_delete)) {
foreach ($drafts_to_delete as $post_id) {
wptrash_post($post_id); // перемещаем в корзину
}
}
}
// Запускаем функцию ежедневно
if (!wp_next_scheduled('wpstuff_daily_delete_old_drafts_hook')) {
wp_schedule_event(time(), 'daily', 'wpstuff_daily_delete_old_drafts_hook');
}
add_action('wpstuff_daily_delete_old_drafts_hook', 'wpstuff_delete_old_drafts');Этот код создает ежедневное задание, которое автоматически перемещает в корзину все черновики старше 30 дней. Вы можете изменить параметр $days под ваши нужды.
Объяснение работы кода
Мы используем глобальный объект $wpdb для выборки ID черновиков с датой создания более 30 дней назад. Затем для каждого из них вызываем функцию wptrash_post, которая безопасно перемещает запись в корзину, не удаляя навсегда сразу.
Расширение функционала: удаление черновиков без корзины и уведомления
Если нужно сразу удалять черновики без помещения в корзину, можно заменить строку удаления на:
wp_delete_post($post_id, true); // true - удаление безвозвратноОднако будьте осторожны с таким подходом — восстановить данные будет невозможно.
Как интегрировать с плагином Clearfy Pro для оптимизации
Плагин Clearfy Pro предлагает инструменты для тонкой настройки очистки базы данных, включая автоматическую очистку старых черновиков. Его можно использовать совместно с приведенным кодом для максимальной эффективности.
Clearfy Pro умеет:
- Автоматически очищать устаревшие записи и ревизии по расписанию.
- Оптимизировать таблицы базы данных без ручного запуска.
- Настраивать исключения для важных данных.
Рекомендации по применению и безопасность
Перед внедрением автоматического удаления черновиков рекомендуем:
- Сделать резервную копию базы данных.
- Проверить работу на тестовом сайте.
- Настроить уведомления или логи для мониторинга очистки.
Также учитывайте, что некоторые черновики могут использоваться для запланированных публикаций или быть важными рабочими материалами, поэтому настройте параметры удаления аккуратно.
Выводы и лучшие практики
Автоматическое удаление старых черновиков — эффективный способ уменьшить нагрузку на базу данных и поддерживать порядок в админке. Выбор между использованием плагина или собственного кода зависит от ваших предпочтений и специфики сайта.
Если вы хотите быстро и безопасно очистить базу, попробуйте WP-Optimize или Clearfy Pro. Для более гибкой и тонкой настройки подойдёт собственный код с планировщиком задач.