В процессе создания контента в WordPress накапливаются не только опубликованные записи, но и множество черновиков и автосохранений. Со временем это может замедлять работу сайта, увеличивать размер базы данных и создавать неудобства при администрировании. В этой статье подробно разберем, как автоматизировать удаление старых черновиков и автосохранений, используя как плагины, так и собственные решения на PHP с примерами кода.
Почему важно удалять старые черновики и автосохранения
Черновики и автосохранения — это полезная штука для безопасности и удобства работы с контентом. Однако, если их не контролировать, эти записи могут накапливаться в базе данных тысячами, что приводит к:
- Увеличению размера базы данных;
- Замедлению запросов к базе и работе админ-панели;
- Трудностям в управлении контентом — сложно ориентироваться в списке записей;
- Небольшому, но ненужному потреблению дискового пространства.
Решение — настроить автоматическую очистку старых черновиков и автосохранений, которые не обновлялись длительное время.
Удаление старых черновиков и автосохранений с помощью плагина Clearfy Pro
Плагин Clearfy Pro предлагает удобный модуль для очистки базы данных, включая удаление старых ревизий, автосохранений и черновиков.
Как настроить:
- Установите и активируйте Clearfy Pro.
- Перейдите в раздел «Оптимизация» → «Очистка базы данных».
- Выберите опцию удаления черновиков и автосохранений старше нужного периода (например, 30 дней).
- Запланируйте регулярную очистку через Cron, чтобы процесс проходил автоматически.
Такой подход не требует от вас писать код и подходит для администраторов, которые хотят быстро решить проблему.
Как написать собственную функцию для автоматического удаления старых черновиков и автосохранений
Если вы предпочитаете более гибкий и кастомный подход, можно написать свой PHP-скрипт, который будет удалять посты с типом revision и черновики старше определенного времени.
Пример функции для удаления старых ревизий и черновиков
function wp5ru_delete_old_drafts_and_revisions() {
global $wpdb;
$days = 30; // Удалять записи старше 30 дней
$date_threshold = date('Y-m-d H:i:s', strtotime("-{$days} days"));
// Удаляем ревизии
$revisions = $wpdb->get_col($wpdb->prepare(
"SELECT ID FROM {$wpdb->posts} WHERE post_type = 'revision' AND post_modified < %s",
$date_threshold
));
foreach ($revisions as $revision_id) {
wp_delete_post($revision_id, true);
}
// Удаляем черновики
$drafts = $wpdb->get_col($wpdb->prepare(
"SELECT ID FROM {$wpdb->posts} WHERE post_status = 'draft' AND post_modified < %s",
$date_threshold
));
foreach ($drafts as $draft_id) {
wp_delete_post($draft_id, true);
}
}
// Запускаем функцию через WP-Cron раз в сутки
function wp5ru_schedule_daily_cleanup() {
if (!wp_next_scheduled('wp5ru_daily_cleanup_hook')) {
wp_schedule_event(time(), 'daily', 'wp5ru_daily_cleanup_hook');
}
}
add_action('wp', 'wp5ru_schedule_daily_cleanup');
add_action('wp5ru_daily_cleanup_hook', 'wp5ru_delete_old_drafts_and_revisions');Этот код:
- Определяет функцию
wp5ru_delete_old_drafts_and_revisions, которая удаляет ревизии и черновики, которым больше 30 дней. - Подключает функцию к WP-Cron, чтобы она выполнялась автоматически каждый день.
Внесите этот код в файл functions.php вашей темы или в отдельный плагин.
Дополнительные советы по оптимизации работы с черновиками и ревизиями
Ограничение количества ревизий в WordPress
По умолчанию WordPress может хранить множество ревизий одной записи, что быстро раздувает базу. Чтобы ограничить количество ревизий, можно добавить в wp-config.php строку:
define('WP_POST_REVISIONS', 5); // Хранить максимум 5 ревизийЭто уменьшит накопление ревизий в будущем.
Отключение автосохранения при необходимости
Если автосохранения вызывают проблемы или накапливаются слишком быстро, их можно отключить (но с осторожностью) добавлением в functions.php:
function wp5ru_disable_autosave() {
wp_deregister_script('autosave');
}
add_action('wp_print_scripts', 'wp5ru_disable_autosave');Однако автосохранения полезны для предотвращения потери данных, поэтому этот метод стоит применять только в исключительных случаях.
Использование плагинов для очистки базы данных
Кроме Clearfy Pro, популярны плагины WP-Optimize и WP Sweep. Они позволяют удалять ревизии, автосохранения, спам-комментарии и прочие ненужные данные в один клик или по расписанию.
Заключение по автоматическому удалению черновиков и автосохранений
Удаление старых черновиков и автосохранений — важная задача для поддержания производительности и чистоты базы данных WordPress. В зависимости от уровня ваших навыков и требований к кастомизации, вы можете выбрать готовый плагин или реализовать собственное решение на PHP с использованием WP-Cron. Не забывайте дополнительно ограничивать количество ревизий и внимательно подходить к отключению автосохранений, чтобы не потерять важные данные.