Устаревший контент на сайте WordPress может замедлять работу, занимать место в базе данных и создавать путаницу для пользователей. В этой статье мы рассмотрим, как автоматизировать удаление старых записей, ревизий и медиафайлов, используя как готовые плагины, так и собственные функции с примерами кода. Это поможет поддерживать ваш сайт в актуальном состоянии и оптимизировать его производительность.
Почему важно удалять старый контент в WordPress
Со временем на сайте накапливаются записи, которые уже не актуальны, например, новости прошлых лет, устаревшие обзоры или акции. Аналогично, база данных может содержать множество ревизий и неиспользуемых медиафайлов. Это приводит к:
- Увеличению размера базы данных и медленной работе сайта.
- Проблемам с SEO из-за дублирующегося или нерелевантного контента.
- Сложностям в управлении контентом.
Автоматизация удаления помогает избежать ручной работы и поддерживать порядок.
Автоматическое удаление старых записей с помощью WPKeys_delete_old_posts
Для удаления старых постов можно создать функцию, которая будет запускаться по расписанию через WP-Cron. Например, удалять записи старше 1 года.
function wpkeys_delete_old_posts() {
$args = array(
'post_type' => 'post',
'post_status' => 'publish',
'date_query' => array(
array(
'before' => '1 year ago',
),
),
'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 — удаление без перемещения в корзину
}
}
}
// Запускаем функцию ежедневно
if (!wp_next_scheduled('wpkeys_daily_delete_old_posts')) {
wp_schedule_event(time(), 'daily', 'wpkeys_daily_delete_old_posts');
}
add_action('wpkeys_daily_delete_old_posts', 'wpkeys_delete_old_posts');Этот код удалит все опубликованные записи старше одного года. Важно протестировать работу функции на тестовом сайте, чтобы не удалить важный контент.
Удаление старых ревизий: оптимизация базы данных
Ревизии записей — это полезная функция, но их накопление приводит к раздутой базе данных. Для автоматического удаления ревизий старше заданного срока можно использовать такой код:
function wpkeys_delete_old_revisions() {
global $wpdb;
$days = 30; // удаляем ревизии старше 30 дней
$date = date('Y-m-d H:i:s', strtotime("-{$days} days"));
$revisions = $wpdb->get_results($wpdb->prepare(
"SELECT ID FROM $wpdb->posts WHERE post_type = 'revision' AND post_modified < %s",
$date
));
foreach ($revisions as $revision) {
wp_delete_post($revision->ID, true);
}
}
// Запускаем еженедельно
if (!wp_next_scheduled('wpkeys_weekly_delete_old_revisions')) {
wp_schedule_event(time(), 'weekly', 'wpkeys_weekly_delete_old_revisions');
}
add_action('wpkeys_weekly_delete_old_revisions', 'wpkeys_delete_old_revisions');Такой подход позволит содержать базу данных в чистоте, что положительно скажется на производительности сайта.
Удаление неиспользуемых медиафайлов с помощью плагинов
Многие пользователи сталкиваются с проблемой накопления неиспользуемых изображений и других медиафайлов. Для их удаления вручную требуется много времени, поэтому есть готовые плагины:
- Media Cleaner — анализирует базу данных и папки, удаляет неиспользуемые файлы.
- Clearfy Pro — содержит функции оптимизации, включая очистку базы и удаление мусора.
Использование плагинов упрощает задачу, но автоматизация через код даёт больше контроля и гибкости.
Автоматизация с WPKeys: расширенные возможности
Если вы используете тему или плагины от WPShop, например, Clearfy Pro, вы можете настроить автоматическую очистку базы данных и удаление устаревших данных через удобный интерфейс. Это особенно полезно для сайтов с большим количеством контента.
Кроме того, можно настроить WPRemark для оценки комментариев и автоматически удалять спам и нерелевантные отзывы, что тоже помогает поддерживать порядок.
Практические рекомендации по внедрению автоматического удаления
1. Перед внедрением обязательно сделайте резервную копию сайта и базы данных.
2. Используйте тестовую среду для проверки работы автоматических скриптов.
3. Настраивайте расписание WP-Cron с учётом нагрузки на сервер, чтобы не создавать пиков.
4. Внимательно подбирайте условия удаления, чтобы не потерять важный контент.
5. Используйте логи и уведомления, чтобы отслеживать удаление.
Итог
Автоматизация удаления старого контента в WordPress — эффективный способ поддерживать сайт в порядке и улучшать производительность. С помощью простых функций на PHP и WP-Cron, а также специализированных плагинов от WPShop, вы сможете без лишних усилий управлять содержимым и базой данных.