Почему важно удалять устаревший контент в WordPress
С течением времени на сайте накапливается множество записей, страниц и других типов контента, которые перестают быть актуальными. Это влияет не только на качество пользовательского опыта, но и на производительность сайта: база данных становится больше, увеличивается время отклика, а поисковые системы могут снижать рейтинг сайта из-за большого количества неактуальной информации.
Автоматическое удаление устаревших записей помогает держать сайт в порядке, облегчает администрирование и повышает скорость работы. В этой статье мы рассмотрим, как реализовать такую функцию в WordPress с помощью собственного кода и полезных плагинов.
Как настроить автоматическое удаление старых записей через WP Cron
WordPress имеет встроенный механизм планировщика задач — WP Cron. С его помощью можно запускать периодические задачи, например, для удаления записей старше определенного срока. Давайте создадим функцию wplessons_delete_old_posts, которая будет удалять записи старше 180 дней.
function wplessons_delete_old_posts() {
$args = array(
'post_type' => 'post',
'post_status' => 'publish',
'date_query' => array(
array(
'before' => '180 days ago',
),
),
'posts_per_page' => -1,
'fields' => 'ids',
);
$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 wplessons_schedule_old_posts_deletion() {
if (!wp_next_scheduled('wplessons_delete_old_posts_hook')) {
wp_schedule_event(time(), 'daily', 'wplessons_delete_old_posts_hook');
}
}
add_action('wp', 'wplessons_schedule_old_posts_deletion');
add_action('wplessons_delete_old_posts_hook', 'wplessons_delete_old_posts');Этот код выполняет следующие задачи:
- Находит все опубликованные записи старше 180 дней.
- Удаляет их без перемещения в корзину.
- Запускает проверку и удаление ежедневно.
Такой подход помогает поддерживать базу данных в актуальном состоянии без вмешательства администратора.
Как автоматически удалять устаревшие страницы и пользовательский контент
Если на вашем сайте есть страницы или кастомные типы записей, которые тоже требуют очистки, можно расширить функцию, добавив их в параметры запроса. Например, для удаления страниц старше 365 дней:
function wplessons_delete_old_pages() {
$args = array(
'post_type' => 'page',
'post_status' => 'publish',
'date_query' => array(
array(
'before' => '365 days ago',
),
),
'posts_per_page' => -1,
'fields' => 'ids',
);
$old_pages = get_posts($args);
if (!empty($old_pages)) {
foreach ($old_pages as $page_id) {
wp_delete_post($page_id, true);
}
}
}
add_action('wplessons_delete_old_pages_hook', 'wplessons_delete_old_pages');
// Запускаем задачу еженедельно
function wplessons_schedule_old_pages_deletion() {
if (!wp_next_scheduled('wplessons_delete_old_pages_hook')) {
wp_schedule_event(time(), 'weekly', 'wplessons_delete_old_pages_hook');
}
}
add_action('wp', 'wplessons_schedule_old_pages_deletion');Можно объединить удаление записей и страниц в одну функцию, добавив проверку пост-типа, либо делать отдельные задачи для разных типов контента.
Использование плагинов для автоматического удаления старого контента
Если вы не хотите писать код, существуют плагины, которые облегчают задачу:
- Auto Delete Posts — позволяет настроить удаление записей по заданным условиям, например, по дате создания, категории или статусу.
- WP Bulk Delete — мощный инструмент для массового удаления записей, страниц, пользовательских типов по фильтрам.
- Clearfy Pro — комплексный плагин оптимизации сайта, который содержит функцию очистки базы данных и может помочь с удалением устаревшего контента.
Плагины обычно имеют удобный интерфейс и гибкие настройки, что идеально для пользователей без навыков программирования.
Рекомендации по безопасности и резервному копированию
Автоматическое удаление контента — операция, требующая осторожности. Рекомендуется:
- Регулярно создавать резервные копии сайта и базы данных с помощью плагинов типа UpdraftPlus или WPBackItUp.
- Тестировать код или плагины на тестовом сайте перед внедрением на рабочем ресурсе.
- Использовать удаление с перемещением в корзину (параметр
wp_delete_postвторым аргументомfalse), чтобы иметь возможность восстановить удалённые материалы при ошибке.
Выводы и полезные ссылки
Автоматизация удаления старого контента помогает поддерживать сайт чистым и быстрым. Используйте WP Cron для запуска регулярных задач, применяйте фильтры даты для выбора устаревших записей и учитывайте особенности вашего контента.
Для расширенной оптимизации рекомендую обратить внимание на Clearfy Pro — удобный инструмент для оптимизации и очистки WordPress.