Если ваш сайт WordPress активно используется для публикаций и редактирования, со временем в базе данных накапливается множество старых черновиков. Они занимают место, замедляют работу админки и могут создавать путаницу при работе с контентом. В этой статье мы подробно разберем, как настроить автоматическое удаление старых черновиков в WordPress, используя как готовые плагины, так и собственные решения на PHP.
Почему важно удалять старые черновики в WordPress
Черновики — это полезная возможность сохранять незавершенные записи. Однако, если их не контролировать, количество таких записей может стать огромным. Это приводит к нескольким проблемам:
- Ненужное заполнение базы данных, что влияет на скорость запросов.
- Загромождение интерфейса админки, усложняя навигацию.
- Риск случайного восстановления или публикации устаревшего контента.
Регулярное удаление старых черновиков помогает поддерживать чистоту базы данных и улучшать общую производительность сайта.
Использование плагинов для автоматического удаления старых черновиков
Самый простой способ — применять специализированные плагины, которые позволяют настроить удаление черновиков по времени хранения.
Плагин WP-Sweep
WP-Sweep — мощный инструмент для очистки базы данных WordPress. Он умеет удалять ревизии, спам-комментарии, а также старые черновики.
После установки перейдите в раздел «Sweep» в админке и выберите опцию очистки черновиков. Можно выполнять очистку вручную или настроить автоматические задачи через WP-Cron.
Плагин Auto Delete Posts
Auto Delete Posts позволяет удалять записи по заданным правилам, включая черновики старше определенного количества дней.
В настройках можно указать, что удалять только черновики и задать срок, например, 30 дней. После сохранения плагин будет автоматически очищать базу.
Как написать собственную функцию для удаления старых черновиков в WordPress
Если вы хотите более гибко контролировать процесс и не использовать сторонние плагины, можно реализовать функцию самостоятельно. Ниже приведён пример кода, который удаляет черновики старше 30 дней.
<?php
function wptask_delete_old_drafts() {
global $wpdb;
$days = 30; // количество дней, старше которых черновики будут удалены
$date_threshold = date('Y-m-d H:i:s', strtotime('-' . $days . ' days'));
// Получаем ID черновиков, старше даты
$drafts = $wpdb->get_col($wpdb->prepare(
"SELECT ID FROM {$wpdb->posts} WHERE post_status = 'draft' AND post_date < %s",
$date_threshold
));
if (!empty($drafts)) {
foreach ($drafts as $draft_id) {
wp_delete_post($draft_id, true); // true — удаляем навсегда
}
}
}
// Запускаем функцию раз в сутки с помощью WP-Cron
add_action('wptask_daily_cleanup', 'wptask_delete_old_drafts');
// Регистрируем событие при активации темы или плагина
function wptask_schedule_cleanup() {
if (!wp_next_scheduled('wptask_daily_cleanup')) {
wp_schedule_event(time(), 'daily', 'wptask_daily_cleanup');
}
}
add_action('wp', 'wptask_schedule_cleanup');
// Очищаем cron при деактивации
function wptask_clear_cleanup_schedule() {
$timestamp = wp_next_scheduled('wptask_daily_cleanup');
if ($timestamp) {
wp_unschedule_event($timestamp, 'wptask_daily_cleanup');
}
}
register_deactivation_hook(__FILE__, 'wptask_clear_cleanup_schedule');
?>Этот код добавляет ежедневное задание, которое ищет и удаляет все черновики старше 30 дней. Вы можете изменить значение $days под свои нужды.
Использование WP-CLI для очистки черновиков
Если у вас есть доступ к серверу и установлен WP-CLI, можно быстро удалить старые черновики через командную строку.
Команда для удаления всех черновиков:
wp post delete $(wp post list --post_type='post' --post_status='draft' --format=ids)Чтобы удалять только черновики старше определенной даты, можно составить более сложный скрипт с фильтрацией по дате публикации.
Использование WP-CLI удобно для администраторов, которые регулярно делают обслуживание сайта вручную или через скрипты.
Оптимизация базы данных после удаления черновиков
После массового удаления записей рекомендуется оптимизировать базу данных, чтобы освободить место и повысить скорость запросов.
Плагин Clearfy Pro отлично подходит для комплексной оптимизации базы данных и WordPress в целом. Он умеет удалять мусор, оптимизировать таблицы и ускорять сайт.
Для ручной оптимизации можно использовать SQL-запросы через phpMyAdmin или WP-CLI:
OPTIMIZE TABLE wp_posts;Регулярная оптимизация в сочетании с удалением старых черновиков значительно улучшит производительность вашего сайта.
Полезные советы по работе с черновиками в WordPress
Автоматическое сохранение и ревизии
WordPress по умолчанию сохраняет автоматические черновики и ревизии. Если вы хотите уменьшить количество ревизий, добавьте в wp-config.php:
define('WP_POST_REVISIONS', 3); // хранить максимум 3 ревизииЭто поможет снизить нагрузку на базу данных.
Использование плагина Expert Review для управления контентом
Если вы хотите более тонко контролировать черновики и процесс редактирования, обратите внимание на Expert Review. Он позволяет организовать редакционные процессы, отслеживать статусы и управлять версиями публикаций.
Резервное копирование перед удалением
Перед массовым удалением черновиков обязательно сделайте резервную копию сайта. Для этого можно использовать плагин Backup Plugin или аналогичные решения.
Это защитит вас от случайной потери важных данных.