Ведение сайта на WordPress часто приводит к накоплению большого количества постов, которые со временем перестают приносить пользу. Такие записи могут не иметь просмотров, комментариев или других взаимодействий, и их хранение занимает место в базе данных и замедляет работу сайта. В этой статье разберём, как автоматически удалять неликвидные посты, то есть записи без активности, используя собственный код и готовые плагины.
Почему важно удалять неликвидные посты
Неликвидные посты — это записи, которые не приносят трафик и не вовлекают пользователей. Их удаление помогает:
- Сократить размер базы данных и увеличить скорость её работы.
- Повысить качество контента сайта, убрав неактуальные и бесполезные записи.
- Снизить нагрузку на сервер и улучшить индексирование сайта поисковиками.
Однако важно корректно определить критерии «неликвидности», чтобы не удалить полезный, но пока непопулярный контент.
Как определить неликвидные посты в WordPress
Основные параметры для оценки активности постов:
- Количество просмотров. Если у вас установлен плагин статистики или вы ведёте логи, можно использовать их данные.
- Количество комментариев. Записи без комментариев дольше определённого периода можно считать неактивными.
- Дата публикации. Старые посты с низкой активностью — основной кандидат на удаление.
Если нет плагинов для учёта просмотров, можно ориентироваться на комментарии и дату.
Реализация автоматического удаления через WP-Cron
Для автоматизации удаления создадим функцию и запланируем её выполнение с помощью WP-Cron.
Пример функции для удаления постов без комментариев за последние 6 месяцев
function wpteam_delete_inactive_posts() {
$args = array(
'post_type' => 'post',
'post_status' => 'publish',
'date_query' => array(
array(
'column' => 'post_date',
'before' => '6 months ago',
),
),
'comment_count' => 0,
'fields' => 'ids',
'posts_per_page' => -1,
);
$query = new WP_Query($args);
if (!empty($query->posts)) {
foreach ($query->posts as $post_id) {
wp_delete_post($post_id, true); // true — удаление без перемещения в корзину
}
}
}
// Регистрируем событие
if (!wp_next_scheduled('wpteam_daily_cleanup_hook')) {
wp_schedule_event(time(), 'daily', 'wpteam_daily_cleanup_hook');
}
// Привязываем функцию к событию
add_action('wpteam_daily_cleanup_hook', 'wpteam_delete_inactive_posts');В этом коде мы ищем все опубликованные посты старше 6 месяцев без комментариев и удаляем их безвозвратно. Функция запускается ежедневно через WP-Cron.
Добавление проверки по просмотрам с помощью плагина WP-PostViews
Для более точного анализа можно учитывать просмотры постов. Плагин WP-PostViews позволяет считать просмотры, сохраняя их в метаданных поста.
Пример расширения функции с учётом просмотров:
function wpteam_delete_inactive_posts_views() {
$args = array(
'post_type' => 'post',
'post_status' => 'publish',
'date_query' => array(
array(
'column' => 'post_date',
'before' => '6 months ago',
),
),
'fields' => 'ids',
'posts_per_page' => -1,
);
$query = new WP_Query($args);
if (!empty($query->posts)) {
foreach ($query->posts as $post_id) {
$views = (int) get_post_meta($post_id, 'views', true);
$comments = get_comments_number($post_id);
if ($views < 10 && $comments === 0) {
wp_delete_post($post_id, true);
}
}
}
}Здесь удаляются посты, у которых просмотров меньше 10 и нет комментариев. Вы можете настроить пороговые значения под свои нужды.
Использование плагинов для автоматизации удаления
Если не хочется писать код, можно воспользоваться плагинами для автоматизации очистки контента:
- WP Bulk Delete — позволяет удалять посты по множеству критериев, включая дату, категорию, метки, количество комментариев и другое.
- Delete Old Posts — плагин для автоматического удаления старых постов по расписанию.
Рекомендуется выбирать плагины с хорошими отзывами и регулярно обновляемые. Например, WP Bulk Delete совместим с последними версиями WordPress и позволяет гибко настроить правила удаления.
Рекомендации по безопасности и тестированию
Автоматическое удаление постов — операция, требующая осторожности. Несколько советов:
- Перед внедрением на живом сайте протестируйте функцию на тестовом окружении.
- Сделайте резервную копию базы данных.
- Сначала не удаляйте записи, а выводите их в логи или в админку, чтобы проверить критерии.
- Используйте удаление с перемещением в корзину, чтобы можно было восстановить случайно удалённые посты, например, замените
trueнаfalseвwp_delete_post.
Как интегрировать с WP-Cron и плагином Clearfy Pro
Если вы используете плагин Clearfy Pro, он позволяет гибко управлять WP-Cron задачами и оптимизировать производительность сайта. Вы можете добавить вашу функцию удаления в список кастомных задач, используя интерфейс плагина.
Это позволит легко контролировать расписание очистки и отключать её при необходимости без правки кода.
Итоговые рекомендации по настройке автоматического удаления
Для эффективного удаления неликвидных постов:
- Определите чёткие критерии — дата, просмотры, комментарии.
- Используйте WP-Cron для регулярного запуска скрипта.
- Тестируйте на тестовом сайте и делайте резервные копии.
- Рассмотрите использование готовых плагинов для удобства.
- Интегрируйте управление задачами с плагинами оптимизации, например, Clearfy Pro.
Такой подход поможет держать базу данных в порядке и поддерживать актуальность контента без лишних усилий.