Многие владельцы сайтов сталкиваются с задачей своевременного удаления устаревшего контента. Это особенно актуально для новостных ресурсов, блогов и сайтов с большой базой материалов, где старая информация теряет актуальность и может негативно влиять на SEO и пользовательский опыт. В этой статье мы подробно разберём, как автоматизировать удаление старого контента в WordPress на основе даты публикации, используя как готовые плагины, так и собственные решения с примерами кода.
Почему важно удалять старый контент в WordPress
Удаление устаревших записей помогает поддерживать актуальность сайта, улучшает восприятие пользователями и снижает нагрузку на базу данных. Старый контент может содержать неактуальную информацию, сломанные ссылки или устаревшие рекомендации, что снижает доверие к ресурсу. Кроме того, поддержание чистоты контента положительно сказывается на SEO, так как поисковые системы ценят свежий и релевантный контент.
Однако ручное удаление занимает много времени и может привести к ошибкам, поэтому автоматизация этого процесса является оптимальным решением.
Использование плагинов для автоматического удаления старого контента
Плагин Auto Post Delete
Auto Post Delete — простой и эффективный плагин, который позволяет настроить автоматическое удаление записей и страниц по возрасту. Он поддерживает фильтрацию по типу записи и категориям, что даёт гибкость в управлении контентом.
Для установки:
- Перейдите в админку WordPress → Плагины → Добавить новый.
- Введите в поиске «Auto Post Delete».
- Установите и активируйте плагин.
После активации в настройках плагина можно указать максимальный возраст записи в днях, после которого она будет автоматически удалена.
Плагин WP Bulk Delete
WP Bulk Delete позволяет удалять посты, страницы и другие типы записей по различным критериям, включая дату публикации, категории, статусы и метки. Он подходит для более сложных сценариев, когда нужно точечно управлять удалением.
Преимущества WP Bulk Delete:
- Гибкая фильтрация контента.
- Планировщик заданий для автоматизации.
- Удаление пользователей и комментариев по определённым условиям.
Настроить автоматическое удаление можно через интерфейс плагина или использовать его API для интеграции в кастомные решения.
Автоматизация удаления старого контента с помощью кода
Если вы предпочитаете не использовать плагины или хотите интегрировать удаление в собственные процессы, можно воспользоваться WP Cron и написать функцию для удаления записей старше определённой даты.
Пример кода для автоматического удаления постов старше 180 дней
function wpscan_delete_old_posts() {
$args = array(
'date_query' => array(
array(
'column' => 'post_date',
'before' => '180 days ago',
),
),
'post_type' => 'post',
'post_status' => 'publish',
'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 - без помещения в корзину
}
}
}
function wpscan_schedule_old_posts_deletion() {
if (!wp_next_scheduled('wpscan_delete_old_posts_hook')) {
wp_schedule_event(time(), 'daily', 'wpscan_delete_old_posts_hook');
}
}
add_action('wpscan_delete_old_posts_hook', 'wpscan_delete_old_posts');
add_action('wp', 'wpscan_schedule_old_posts_deletion');В этом коде:
- Функция
wpscan_delete_old_postsищет все опубликованные записи старше 180 дней и удаляет их без помещения в корзину. - Функция
wpscan_schedule_old_posts_deletionрегистрирует ежедневное событие для запуска удаления. - Хук
wpscan_delete_old_posts_hookсвязывает событие и функцию удаления.
Такой подход удобно использовать, если у вас есть специфические требования к удалению, например, исключение определённых категорий или типов записей. Просто добавьте дополнительные параметры в массив $args.
Расширение примера: исключение определённых категорий
Если вы хотите исключить из удаления записи из категории «Новости», добавьте параметр category__not_in:
$args = array(
'date_query' => array(
array(
'column' => 'post_date',
'before' => '180 days ago',
),
),
'post_type' => 'post',
'post_status' => 'publish',
'category__not_in' => array(5), // ID категории «Новости»
'fields' => 'ids',
'posts_per_page' => -1,
);Как контролировать процесс удаления и избегать ошибок
Автоматическое удаление контента — достаточно серьёзная операция, поэтому важно предусмотреть контроль и резервное копирование.
Рекомендации:
- Перед удалением создавайте резервные копии базы данных.
- Добавьте логирование удалённых записей для возможного восстановления.
- Тестируйте код или плагин на тестовом сайте перед применением на рабочем.
Для логирования можно расширить функцию следующим образом:
function wpscan_delete_old_posts() {
$args = array(
'date_query' => array(
array(
'column' => 'post_date',
'before' => '180 days ago',
),
),
'post_type' => 'post',
'post_status' => 'publish',
'fields' => 'ids',
'posts_per_page' => -1,
);
$old_posts = get_posts($args);
if (!empty($old_posts)) {
foreach ($old_posts as $post_id) {
$title = get_the_title($post_id);
if (wp_delete_post($post_id, true)) {
error_log('Удалён пост ID: ' . $post_id . ', Заголовок: ' . $title);
} else {
error_log('Ошибка при удалении поста ID: ' . $post_id);
}
}
}
}Логи можно просматривать через файлы сервера или плагины для мониторинга ошибок.
Дополнительные рекомендации и полезные плагины
Clearfy Pro для управления контентом
Хотя Clearfy Pro больше известен как плагин для оптимизации и безопасности, он содержит инструменты для управления контентом и очистки базы данных, что помогает в удалении устаревших данных и оптимизации сайта.
Использование WP-CLI для массового удаления
Если у вас есть доступ к серверу и вы предпочитаете работать через командную строку, WP-CLI предлагает мощные команды для удаления постов. Например, команда:
wp post delete $(wp post list --post_type=post --format=ids --date_query_column=post_date --before='180 days ago')удалит все посты старше 180 дней. Это удобно для быстрой очистки без создания кастомного кода.
Выводы
Автоматизация удаления старого контента в WordPress — важный элемент поддержки сайта в актуальном состоянии и улучшения его производительности. Используйте готовые плагины для быстрого старта или внедряйте собственные решения для максимальной гибкости. Обязательно тестируйте все изменения и делайте резервные копии перед удалением данных. Такой подход позволит вам эффективно управлять контентом и обеспечивать лучший опыт для посетителей.
Подробнее о полезных плагинах и инструментах для оптимизации WordPress смотрите на WPSHOP.RU.