В процессе ведения сайта на WordPress часто накапливается множество неиспользуемых черновиков. Они занимают место в базе данных, замедляют админ-панель и создают беспорядок. В этой статье мы разберём, как автоматически удалять старые черновики в WordPress, используя собственный плагин или сниппет кода, а также рассмотрим полезные плагины для управления контентом.
Почему важно удалять старые черновики в WordPress
Черновики — это записи, которые вы начали создавать, но не опубликовали. Они могут оставаться в базе годами, если не удалять их вручную. Это приводит к нескольким проблемам:
- Загромождение базы данных: Чем больше записей, тем тяжелее работать системе.
- Замедление работы админки: В списках записей и поиске появляется много «мусора».
- Ухудшение SEO и индексации: Хотя черновики не индексируются, их большое количество влияет на производительность сайта.
Регулярное удаление старых черновиков помогает поддерживать сайт в оптимальном состоянии.
Как в WordPress найти и удалить старые черновики вручную
Для начала можно просмотреть список черновиков в админке в разделе «Записи». Но когда черновиков слишком много, вручную это сделать неудобно. Вот как можно найти черновики старше определённого времени с помощью SQL-запроса:
SELECT ID, post_title, post_date FROM wp_posts WHERE post_status = 'draft' AND post_date < DATE_SUB(NOW(), INTERVAL 30 DAY);Этот запрос покажет черновики старше 30 дней. Чтобы их удалить, можно использовать плагин для работы с базой данных, например, Clearfy, который умеет оптимизировать базу и удалять ненужный контент.
Автоматическое удаление старых черновиков с помощью кода
Чтобы не заниматься этим вручную, можно написать функцию, которая будет удалять черновики старше определённого срока автоматически. Добавьте следующий код в файл functions.php вашей темы или в собственный плагин:
function wpcheck_delete_old_drafts() {
global $wpdb;
$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); // принудительное удаление
}
}
// Запускаем функцию при запуске WP Cron ежедневно
add_action('wpcheck_delete_old_drafts_hook', 'wpcheck_delete_old_drafts');
if (!wp_next_scheduled('wpcheck_delete_old_drafts_hook')) {
wp_schedule_event(time(), 'daily', 'wpcheck_delete_old_drafts_hook');
}Этот код создаёт ежедневное задание, которое удаляет все черновики старше 30 дней. Вы можете изменить период, подставив нужное значение в переменную $days.
Объяснение кода
Мы используем глобальный объект $wpdb для прямого запроса к базе данных, чтобы найти ID нужных записей. Затем удаляем их функцией wp_delete_post() с параметром true, чтобы выполнить безвозвратное удаление. Запланированное событие создаётся через WP Cron, что позволяет выполнять задачу автоматически каждый день.
Использование плагинов для автоматического управления черновиками
Если не хочется писать код, можно воспользоваться готовыми плагинами:
- WP-Optimize — мощный инструмент для очистки базы данных, который позволяет удалять старые черновики и ревизии. Можно настроить автоматическую очистку по расписанию.
- Advanced Database Cleaner — плагин с гибкими настройками для удаления неиспользуемых записей, включая черновики и устаревшие метаданные.
- Clearfy — оптимизирует работу WordPress и умеет удалять мусорные записи, включая черновики. Поддерживает автоматизацию процессов.
Все эти плагины можно найти на WPSHOP.ru с удобной установкой и поддержкой.
Дополнительные советы по управлению черновиками и оптимизации базы
Кроме удаления старых черновиков, стоит обратить внимание на ревизии записей. WordPress по умолчанию сохраняет много ревизий, которые тоже накапливаются и замедляют сайт. Чтобы ограничить их количество, добавьте в wp-config.php следующую строку:
define('WP_POST_REVISIONS', 5); // сохранять не более 5 ревизийДля очистки уже накопленных ревизий можно использовать те же плагины, что и для удаления черновиков.
Также рекомендуем регулярно оптимизировать таблицы базы данных с помощью команды OPTIMIZE TABLE или специализированных плагинов. Это уменьшит размер базы и повысит скорость запросов.
Заключение по автоматическому удалению старых черновиков в WordPress
Автоматизация удаления устаревших черновиков — важный шаг к поддержанию чистоты и производительности сайта на WordPress. Вы можете реализовать её при помощи кастомного кода с WP Cron или воспользоваться готовыми плагинами, такими как Clearfy и WP-Optimize. Не забывайте про ревизии и регулярное обслуживание базы — это ключ к быстрому и стабильному сайту.