В этой статье разберем, как настроить автоматическое удаление старого контента в WordPress. Такая задача часто возникает, если на сайте публикуются временные или устаревающие материалы, например, новости, акции, объявления, и нужно регулярно очищать их, чтобы не загромождать базу и не показывать пользователям неактуальную информацию.
Почему важно удалять старый контент автоматически
Ручное удаление старых записей — утомительный процесс, который со временем становится неэффективным. Автоматизация позволяет:
- Поддерживать актуальность контента без лишних усилий
- Оптимизировать базу данных, уменьшая ее размер
- Избежать ошибок и забывчивости при ручном удалении
Рассмотрим несколько способов реализации автоматического удаления старых записей на WordPress.
Настройка удаления через WP Cron и пользовательский код
Самый гибкий способ — создать собственный код, который будет запускаться по расписанию и удалять записи старше определенного срока.
Создание функции удаления по дате
Пример функции для удаления записей старше 30 дней из категории «Новости»:
function wpbloger_delete_old_posts() {
$args = array(
'post_type' => 'post',
'posts_per_page' => -1,
'date_query' => array(
array(
'column' => 'post_date',
'before' => '30 days ago',
),
),
'category_name' => 'novosti',
'fields' => 'ids',
'post_status' => 'publish',
);
$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 wpbloger_cron_schedules($schedules) {
if (!isset($schedules['daily'])) {
$schedules['daily'] = array(
'interval' => 86400, // 24 часа
'display' => __('Ежедневно'),
);
}
return $schedules;
}
add_filter('cron_schedules', 'wpbloger_cron_schedules');
// Регистрация события при активации темы/плагина
function wpbloger_schedule_cron() {
if (!wp_next_scheduled('wpbloger_daily_delete_old_posts')) {
wp_schedule_event(time(), 'daily', 'wpbloger_daily_delete_old_posts');
}
}
add_action('wp', 'wpbloger_schedule_cron');
// Привязка функции к событию
add_action('wpbloger_daily_delete_old_posts', 'wpbloger_delete_old_posts');
Использование плагина для автоматического удаления старых постов
Если вы не хотите писать код, можно использовать готовые решения. Один из популярных плагинов — Post Expirator. Он позволяет настроить дату истечения срока для каждой записи, после чего посты могут удаляться, менять статус или категорию.
Особенности Post Expirator
- Настройка срока действия записи вручную или по умолчанию
- Варианты удаления: удаление, перевод в черновик, смена категории и др.
- Удобный интерфейс в редакторе записи
Однако у плагина нет автоматического массового удаления по дате без ручного задания срока для каждой записи, что ограничивает его применение для массовой очистки.
Оптимизация и безопасность при удалении контента
При автоматическом удалении важно учитывать следующие моменты:
- Резервное копирование. Перед запуском удаления рекомендуем настроить автоматические бэкапы — например, через WPShop Backup или другие проверенные решения.
- Тестирование на тестовом сайте. Запустите код на копии сайта, чтобы избежать случайной потери нужного контента.
- Логирование. Добавьте запись в лог удаляемых ID, чтобы отслеживать процесс и при необходимости откатываться.
Пример добавления простого логирования в файл:
function wpbloger_log_deleted_posts($post_ids) {
$log_file = WP_CONTENT_DIR . '/deleted-posts.log';
$date = date('Y-m-d H:i:s');
$log_data = $date . ' | Deleted posts: ' . implode(',', $post_ids) . "\n";
file_put_contents($log_file, $log_data, FILE_APPEND);
}
// В основной функции удаления вызвать после удаления:
// wpbloger_log_deleted_posts($old_posts);
Автоматизация через плагин WPGPT для мониторинга контента
Для продвинутых пользователей можно использовать WPGPT — плагин с искусственным интеллектом, который способен анализировать контент и помогать принимать решения о его актуальности. К примеру, можно настроить автоматизированные уведомления о контенте, который устарел, и запускать удаление по API.
Пример использования WPGPT для анализа устаревших постов
С помощью WPGPT можно настроить задачу, которая с помощью AI будет проверять, насколько актуален контент, и помечать для удаления те записи, которые не соответствуют современным требованиям.
Это позволяет идти дальше простой даты публикации и учитывать качество и релевантность постов.
Итоги и рекомендации
Автоматическое удаление старого контента — полезная практика для поддержания сайта в порядке. Для реализации можно использовать как собственный код с WP Cron, так и готовые плагины в зависимости от задач. Обязательно проводите резервное копирование и тестирование перед внедрением.
Если требуется удобный инструмент с AI-поддержкой, обратите внимание на WPGPT.