Ведение сайта на WordPress подразумевает постоянное обновление и управление контентом. Однако иногда возникает необходимость автоматически удалять устаревшие записи, чтобы поддерживать актуальность и оптимизировать базу данных. В этой статье мы рассмотрим, как настроить автоматическое удаление старого контента в WordPress с помощью кода и плагинов.
Почему важно удалять старый контент
С течением времени на сайте накапливаются записи, которые могут потерять актуальность: новости, акции, события и т.д. Их хранение влияет на производительность сайта и качество пользовательского опыта. Автоматическое удаление таких материалов помогает:
- Поддерживать базу данных в чистоте и порядке.
- Уменьшать нагрузку на сервер и ускорять загрузку страниц.
- Повышать релевантность контента для посетителей и поисковых систем.
Создание функции для удаления записей по дате
Для автоматизации процесса можно написать функцию, которая будет удалять записи старше заданного срока. Ниже пример функции wp1_delete_old_posts(), которая удалит записи типа post старше 180 дней.
function wp1_delete_old_posts() {
global $wpdb;
$days = 180; // количество дней
$date = date('Y-m-d H:i:s', strtotime('-' . $days . ' days'));
$old_posts = $wpdb->get_col($wpdb->prepare(
"SELECT ID FROM $wpdb->posts WHERE post_type = %s AND post_status = 'publish' AND post_date < %s",
'post', $date
));
if (!empty($old_posts)) {
foreach ($old_posts as $post_id) {
wp_delete_post($post_id, true); // true - удаление без возможности восстановления
}
}
}Эта функция выбирает все опубликованные записи старше 180 дней и удаляет их без перемещения в корзину.
Автоматизация через WP-Cron
Чтобы функция запускалась регулярно, добавим событие в планировщик WordPress:
function wp1_schedule_delete_old_posts() {
if (!wp_next_scheduled('wp1_daily_delete_old_posts')) {
wp_schedule_event(time(), 'daily', 'wp1_daily_delete_old_posts');
}
}
add_action('wp', 'wp1_schedule_delete_old_posts');
add_action('wp1_daily_delete_old_posts', 'wp1_delete_old_posts');Теперь функция wp1_delete_old_posts будет вызываться ежедневно.
Использование плагинов для удаления старого контента
Если вы предпочитаете готовые решения, рекомендуем обратить внимание на плагины:
- Auto Delete Posts — позволяет удалять записи по дате, категории и другим параметрам.
- WP Bulk Delete — мощный инструмент для массового удаления записей с фильтрацией по меткам, статусу и дате.
Оба плагина имеют гибкие настройки и могут быть полезны для тех, кто не хочет писать код.
Пример настройки WP Bulk Delete для удаления записей старше 6 месяцев
В настройках плагина выберите тип записи post, укажите условие по дате (старше 180 дней), выберите статус publish и выполните удаление. Можно настроить и автоматический запуск через WP-Cron.
Как избежать ошибок при удалении контента
При автоматическом удалении важно учитывать:
- Резервное копирование базы данных — всегда делайте бэкап перед массовыми операциями.
- Правильный выбор условий — не удаляйте важный контент по ошибке.
- Тестирование на тестовом сайте — сначала проверьте работу кода или плагина в безопасной среде.
Для дополнительной безопасности можно модифицировать функцию удаления, чтобы сначала переводить записи в статус trash, а затем удалять окончательно спустя некоторое время.
Расширение функционала: удаление по пользовательским типам записей
Если на сайте используются кастомные типы записей, например, product или event, можно адаптировать функцию удаления:
function wp1_delete_old_custom_posts($post_type = 'post', $days = 180) {
global $wpdb;
$date = date('Y-m-d H:i:s', strtotime('-' . $days . ' days'));
$old_posts = $wpdb->get_col($wpdb->prepare(
"SELECT ID FROM $wpdb->posts WHERE post_type = %s AND post_status = 'publish' AND post_date < %s",
$post_type, $date
));
if (!empty($old_posts)) {
foreach ($old_posts as $post_id) {
wp_delete_post($post_id, true);
}
}
}<Вызовите эту функцию с нужным типом записи, например, wp1_delete_old_custom_posts('event', 365); для удаления событий старше года.
Заключение
Автоматическое удаление старого контента — важный инструмент для поддержания сайта в актуальном состоянии и оптимизации его работы. Выберите подходящий способ — через код или плагин, тщательно протестируйте и настройте регулярный запуск. Это позволит избежать накопления ненужных данных и улучшить производительность вашего WordPress-сайта.
Если хотите расширить функциональность сайта, рекомендуем обратить внимание на плагины с WPSHOP.ru, которые могут помочь в автоматизации и управлении контентом.