Почему важно удалять неиспользуемые посты
С течением времени на сайте WordPress может накапливаться множество устаревших или неактивных записей, которые не приносят пользы, но занимают место в базе данных и могут замедлять работу сайта. Удаление таких постов помогает:
- Оптимизировать базу данных и ускорить запросы.
- Поддерживать актуальность контента для посетителей.
- Снизить нагрузку на сервер и улучшить SEO.
Автоматизация этого процесса позволяет не тратить время на ручную чистку и избегать ошибок.
Настройка автоматического удаления постов через WP-Cron
WordPress предоставляет встроенную систему планировщика задач — WP-Cron, которая позволяет запускать определённые функции по расписанию. Мы можем использовать её для удаления постов, которые не обновлялись и не просматривались длительное время.
Создание функции удаления
Для начала создадим функцию, которая будет находить и удалять посты, не обновлявшиеся более 180 дней и имеющие статус 'черновик' или 'отключено'.
function wpcontent_delete_old_unused_posts() {
$args = array(
'post_type' => 'post',
'post_status' => array('draft', 'pending'),
'date_query' => array(
array(
'column' => 'post_modified_gmt',
'before' => '180 days ago',
),
),
'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); // Полное удаление
}
}
}Регистрация события в WP-Cron
Далее зарегистрируем событие, чтобы функция запускалась раз в неделю. Добавим в functions.php или собственный плагин следующий код:
if (!wp_next_scheduled('wpcontent_weekly_delete_old_posts')) {
wp_schedule_event(time(), 'weekly', 'wpcontent_weekly_delete_old_posts');
}
add_action('wpcontent_weekly_delete_old_posts', 'wpcontent_delete_old_unused_posts');Так мы гарантируем регулярный запуск очистки.
Использование плагина для автоматизации очистки
Если хочется более гибкое решение с интерфейсом, можно использовать готовые плагины, например, Auto Delete Posts. Он позволяет автоматически удалять посты по заданным критериям — возрасту, статусу, категории и т.д.
Для интеграции с WPShop рекомендую обратить внимание на Clearfy Pro, который в том числе оптимизирует базу данных и может помочь с удалением неиспользуемых данных.
Дополнительные советы по безопасному удалению
Резервное копирование перед удалением
Перед автоматическим удалением всегда делайте резервные копии сайта. Для этого подойдут плагины, как Backup WordPress или другие решения.
Логирование удалений
Для контроля процесса полезно вести лог удалённых постов. В функцию удаления можно добавить запись в файл или базу данных:
function wpcontent_delete_old_unused_posts() {
$args = array(
'post_type' => 'post',
'post_status' => array('draft', 'pending'),
'date_query' => array(
array(
'column' => 'post_modified_gmt',
'before' => '180 days ago',
),
),
'fields' => 'ids',
'posts_per_page' => -1,
);
$old_posts = get_posts($args);
if (!empty($old_posts)) {
foreach ($old_posts as $post_id) {
// Логируем ID и дату удаления
error_log('Удалён пост ID: ' . $post_id . ' в ' . current_time('mysql'));
wp_delete_post($post_id, true);
}
}
}Исключение важных постов из удаления
Если хотите исключить определённые категории или теги из удаления, расширьте аргументы запроса, например:
$args['category__not_in'] = array(1, 5); // ID категорий для исключения
Оптимизация после удаления: очистка базы данных
После удаления постов стоит оптимизировать базу данных для освобождения места и улучшения производительности. Для этого можно использовать плагин Clearfy Pro или запустить SQL-запросы вручную:
OPTIMIZE TABLE wp_posts;
OPTIMIZE TABLE wp_postmeta;Также полезно удалить остаточные метаданные удалённых постов, чтобы не было «мусора».
Заключение
Автоматическое удаление неиспользуемых постов — важный шаг к поддержанию производительности и чистоты вашего сайта на WordPress. Используя WP-Cron и собственные функции, можно настроить гибкую и надёжную систему очистки. А готовые плагины помогут сэкономить время и добавить удобный интерфейс для управления удалениями.
Для более глубокой оптимизации рекомендую изучить Clearfy Pro — мощный инструмент для очистки и оптимизации WordPress-сайтов.