Ведение сайта на WordPress зачастую сопровождается накоплением большого количества устаревших или нерелевантных записей, страниц и других типов контента. Это может негативно влиять на производительность сайта, SEO и удобство администрирования. В этой статье мы рассмотрим, как автоматизировать процесс удаления старого контента в WordPress, используя как готовые плагины, так и кастомные решения с помощью кода.
Почему важно удалять старый контент в WordPress
Со временем на любом сайте накапливается контент, который уже не актуален — старые новости, акции, устаревшие статьи и т.д. Удаление такого контента помогает:
- Освободить место в базе данных и уменьшить её размер.
- Улучшить скорость загрузки сайта за счёт уменьшения объёма данных.
- Повысить качество SEO, избавившись от «мусорных» страниц, которые могут понижать рейтинг.
- Сделать админ-панель более удобной и структурированной.
Но делать это вручную — задача утомительная и рискованная. Поэтому лучше автоматизировать процесс.
Использование плагинов для автоматического удаления старого контента
Плагин WP Auto Delete Posts
Один из популярных плагинов, позволяющих автоматически удалять записи и страницы старше заданного срока — WP Auto Delete Posts. Он позволяет настроить:
- Типы записей для удаления.
- Возраст записи (например, удалить записи старше 6 месяцев).
- Удаление только опубликованных или черновиков.
Плагин удобен тем, что имеет настройку расписания и ведёт лог удалённых записей.
Настройка WP Auto Delete Posts
После установки и активации перейдите в меню "Инструменты → Auto Delete Posts" и установите параметры:
- Post Types: выберите типы записей.
- Age in days: укажите количество дней, старше которого записи удаляются.
- Delete Status: опубликованные, черновики или все.
- Schedule: интервал проверки для удаления.
После сохранения плагин будет автоматически удалять записи по заданным критериям.
Кастомное решение на PHP для удаления старого контента
Если вы предпочитаете не использовать лишние плагины, можно написать собственный код, который будет удалять записи старше определённого срока. Для этого добавим функцию в файл functions.php вашей темы или создадим отдельный плагин.
Пример функции для удаления записей старше 180 дней
function wpload_delete_old_posts() {
$days = 180; // количество дней
$date_threshold = date('Y-m-d H:i:s', strtotime('-' . $days . ' days'));
$args = array(
'post_type' => 'post',
'post_status' => 'publish',
'date_query' => array(
array(
'before' => $date_threshold,
),
),
'fields' => 'ids',
'posts_per_page' => -1,
);
$old_posts = get_posts($args);
if (!empty($old_posts)) {
foreach ($old_posts as $post_id) {
wp_delete_post($post_id, true); // true — удаление без корзины
}
}
}
// Запускаем функцию по расписанию 1 раз в день
if (!wp_next_scheduled('wpload_daily_delete_old_posts')) {
wp_schedule_event(time(), 'daily', 'wpload_daily_delete_old_posts');
}
add_action('wpload_daily_delete_old_posts', 'wpload_delete_old_posts');
Эта функция ищет все опубликованные записи старше 180 дней и безвозвратно удаляет их. Запуск происходит автоматически раз в сутки с помощью WP-Cron.
Как отключить удаление для определённых категорий
Если нужно сохранить записи из определённых категорий, добавим фильтр внутри цикла:
foreach ($old_posts as $post_id) {
$categories = wp_get_post_categories($post_id);
// Категории, для которых удаление запрещено
$excluded_cats = array(5, 12); // ID категорий
if (array_intersect($excluded_cats, $categories)) {
continue; // пропускаем запись
}
wp_delete_post($post_id, true);
}
Дополнительные рекомендации и безопасность
Перед тем как массово удалять контент, обязательно сделайте резервную копию базы данных. Это позволит восстановить данные в случае ошибки. Также полезно вести лог удалённых записей — для этого можно добавить запись в файл или базу.
Если вы хотите временно приостановить автоматическое удаление, просто закомментируйте строку с wp_schedule_event или удалите задачу через WP-Cron.
Альтернативные плагины и инструменты для управления контентом
Кроме WP Auto Delete Posts, можно рассмотреть и другие плагины с похожим функционалом:
- Bulk Delete — позволяет массово удалять записи по разным критериям, включая возраст, категории, теги и т.д. Подробнее на WPSHOP Bulk Delete.
- Advanced Database Cleaner — плагин для очистки базы данных, включая удаление устаревших записей и ревизий.
Заключение по теме автоматического удаления старого контента
Автоматизация удаления старого и неактуального контента — важный элемент поддержки сайта на WordPress. Использование специализированных плагинов или кастомных функций позволяет не только поддерживать сайт в порядке, но и улучшить производительность и SEO. Главное — подходить к этому с осторожностью и всегда иметь резервные копии.