Удаление устаревшего или неактуального контента — важная задача для поддержания чистоты сайта и оптимизации базы данных WordPress. В этой статье мы подробно рассмотрим, как можно автоматизировать процесс удаления старого контента, используя как готовые плагины, так и собственные решения на PHP. Это позволит снизить нагрузку на сервер, улучшить SEO и упростить управление сайтом.
Почему важно удалять старый контент в WordPress?
С течением времени на сайте накапливаются записи, страницы, отзывы и другие типы контента, которые могут терять актуальность. Хранение большого объёма неактуальных данных замедляет работу базы данных, усложняет навигацию для пользователей и мешает поисковым системам. Автоматизация удаления позволяет:
- Снизить размер базы данных и ускорить работу сайта.
- Избавиться от мусорного или нерелевантного контента без ручного контроля.
- Обеспечить регулярное обновление и чистоту информации.
Автоматическое удаление контента с помощью плагинов
Плагин «WP Auto Delete Posts»
Один из наиболее простых и функциональных плагинов — WP Auto Delete Posts. Он позволяет настроить автоматическое удаление записей по разным критериям: по дате публикации, по статусу, по категории и даже по пользовательским полям.
Основные возможности:
- Настройка времени жизни записей (например, удалять записи старше 6 месяцев).
- Фильтрация по типу записи (посты, страницы, кастомные типы).
- Логирование удалённых записей для контроля.
Пример настройки плагина WP Auto Delete Posts
После установки перейдите в Настройки –> WP Auto Delete Posts, укажите типы записей, критерии и период жизни. Например, чтобы удалять все записи старше 180 дней, установите «Days to keep» в 180 и выберите нужные типы записей.
Автоматизация удаления старого контента с помощью кода
Если вы хотите реализовать более тонкий и кастомный механизм удаления, можно написать собственный код, который будет запускаться по расписанию с помощью WP-Cron.
Создание функции удаления старых записей
Ниже пример функции wptem_delete_old_posts(), которая удаляет записи старше 90 дней:
function wptem_delete_old_posts() {
$args = array(
'post_type' => 'post',
'post_status' => 'publish',
'date_query' => array(
array(
'before' => '90 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); // true - без перемещения в корзину
}
}
}Регистрация задачи в WP-Cron
Чтобы функция запускалась автоматически, зарегистрируем событие, например, раз в сутки:
function wptem_schedule_old_post_deletion() {
if (!wp_next_scheduled('wptem_daily_old_post_deletion')) {
wp_schedule_event(time(), 'daily', 'wptem_daily_old_post_deletion');
}
}
add_action('wp', 'wptem_schedule_old_post_deletion');
add_action('wptem_daily_old_post_deletion', 'wptem_delete_old_posts');Такой код можно добавить в файл functions.php активной темы или в отдельный плагин.
Удаление старых кастомных типов записей и мета-данных
Для сайтов с кастомными типами записей (например, отзывы, события, товары) процесс удаления может требовать дополнительных условий. Рассмотрим, как адаптировать функцию под кастомные типы.
function wptem_delete_old_custom_posts($post_type = 'review', $days = 60) {
$args = array(
'post_type' => $post_type,
'post_status' => 'publish',
'date_query' => array(
array(
'before' => "$days days ago",
),
),
'fields' => 'ids',
'posts_per_page' => -1,
);
$old_posts = get_posts($args);
if (!empty($old_posts)) {
foreach ($old_posts as $post_id) {
// Можно добавить проверку мета-данных
$meta_value = get_post_meta($post_id, 'wptem_special_flag', true);
if ($meta_value !== 'keep') {
wp_delete_post($post_id, true);
}
}
}
}Такой подход позволяет гибко управлять удалением, исключая записи с определёнными метками.
Комбинирование с плагином Clearfy для оптимизации базы данных
Плагин Clearfy помогает оптимизировать базу данных, удаляя лишние ревизии, спам и прочий мусор. Его можно использовать в связке с автоматическим удалением постов для комплексного улучшения производительности сайта.
Clearfy предлагает удобный интерфейс для удаления старых записей и автоматической очистки, что дополнит ваше кастомное решение или работу плагина WP Auto Delete Posts.
Рекомендации и предосторожности
При автоматическом удалении контента важно:
- Обязательно создавать резервные копии сайта и базы данных перед настройкой автоматических удалений.
- Тестировать код и настройки на тестовом сайте, чтобы избежать случайной потери нужной информации.
- Регулярно проверять логи удаления или уведомления, чтобы контролировать процесс.
- Использовать мягкое удаление (перемещение в корзину) на первых этапах, чтобы можно было восстановить ошибочно удалённый контент.
Заключение
Автоматизация удаления старого контента в WordPress — важный шаг для поддержания чистоты и производительности сайта. Используйте готовые плагины, если хотите быстро настроить процесс, или пишите собственные решения для более точного контроля. Комбинируйте эти методы с оптимизацией базы данных через Clearfy или другие инструменты, чтобы добиться максимальной эффективности.
Для начала рекомендую установить WP Auto Delete Posts и попрактиковаться с настройками. Если понадобятся кастомные решения — используйте примеры кода из статьи и адаптируйте их под свои задачи.