Ведение сайта на WordPress предполагает постоянное обновление и поддержание контента. Со временем на сайте накапливается много устаревших или неактуальных записей, которые могут негативно влиять на SEO и производительность. В этой статье разберём, как автоматизировать удаление старого контента в WordPress, чтобы поддерживать сайт в актуальном состоянии без лишних усилий.
Почему важно удалять старый контент в WordPress
Удаление старого контента помогает улучшить качество сайта, уменьшить размер базы данных и повысить скорость загрузки страниц. Поисковые системы лучше оценивают сайты с актуальным и релевантным содержимым. Также удаление ненужных записей снижает риски безопасности, особенно если они содержат устаревшие скрипты или плагины.
Кроме того, автоматизация этого процесса позволяет не тратить время на ручную очистку сайта и минимизировать ошибки при удалении.
Какие типы контента можно удалять автоматически
Обычно под старым контентом понимают:
- Посты и страницы старше определённого срока (например, 2 года);
- Черновики и неопубликованные записи, которые давно не редактировались;
- Автоматические ревизии и автосохранения, засоряющие базу данных;
- Комментарии со статусом спам или ожидающие модерации, которые не обрабатываются долгое время.
Важно настроить фильтры и критерии удаления так, чтобы не потерять ценный контент.
Использование WP-Cron для автоматического удаления старого контента
WordPress имеет встроенную систему планировщика задач — WP-Cron, которая позволяет запускать функции по расписанию. Мы можем создать собственное задание, которое будет регулярно удалять записи, соответствующие заданным критериям.
Пример кода для удаления постов старше 1 года (365 дней):
function wp_lessons_delete_old_posts() {
$args = array(
'post_type' => 'post',
'post_status' => 'publish',
'date_query' => array(
array(
'before' => date('Y-m-d', strtotime('-365 days')),
),
),
'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('wp_lessons_daily_delete_old_posts')) {
wp_schedule_event(time(), 'daily', 'wp_lessons_daily_delete_old_posts');
}
// Привязка функции к событию
add_action('wp_lessons_daily_delete_old_posts', 'wp_lessons_delete_old_posts');Этот код можно добавить в файл functions.php вашей темы или в отдельный плагин. Он ежедневно будет удалять все публикации старше года.
Удаление старых ревизий и автосохранений для оптимизации базы данных
Помимо постов, в базе данных накапливаются ревизии и автосохранения, которые не нужны навсегда. Очистка этих данных улучшит производительность сайта и уменьшит размер базы.
Пример функции для удаления ревизий:
function wp_lessons_delete_post_revisions() {
global $wpdb;
$wpdb->query("DELETE FROM {$wpdb->posts} WHERE post_type = 'revision'");
}
// Можно запускать вручную или по расписанию через WP-Cron
add_action('wp_lessons_delete_revisions_event', 'wp_lessons_delete_post_revisions');
if (!wp_next_scheduled('wp_lessons_delete_revisions_event')) {
wp_schedule_event(time(), 'weekly', 'wp_lessons_delete_revisions_event');
}Такой подход позволит автоматически удалять ревизии раз в неделю.
Автоматическое удаление спама и неактивных комментариев
Комментарии со статусом «спам» и «ожидают модерации» также могут накапливаться и тормозить работу сайта.
Пример кода для удаления спам-комментариев старше 30 дней:
function wp_lessons_delete_old_spam_comments() {
global $wpdb;
$date = date('Y-m-d H:i:s', strtotime('-30 days'));
$wpdb->query($wpdb->prepare(
"DELETE FROM {$wpdb->comments} WHERE comment_approved = 'spam' AND comment_date < %s",
$date
));
}
// Запускаем еженедельно
if (!wp_next_scheduled('wp_lessons_weekly_delete_spam_comments')) {
wp_schedule_event(time(), 'weekly', 'wp_lessons_weekly_delete_spam_comments');
}
add_action('wp_lessons_weekly_delete_spam_comments', 'wp_lessons_delete_old_spam_comments');Плагины для автоматизации очистки и оптимизации контента
Если вы предпочитаете готовые решения, рекомендую обратить внимание на следующие плагины с возможностями автоматического удаления и оптимизации:
- Clearfy Pro — плагин для оптимизации и очистки WordPress с функцией удаления ревизий, спама и устаревших данных;
- WPRemark — инструмент для управления комментариями и их очистки;
- ABC Pagination — помогает оптимизировать пагинацию и работу с большим количеством записей.
Как избежать ошибок при автоматическом удалении контента
Автоматическое удаление требует аккуратности. Вот основные рекомендации:
- Обязательно делайте резервные копии перед внедрением автоматической очистки;
- Тестируйте скрипты на тестовом сайте, чтобы избежать потери важного контента;
- Используйте фильтры для исключения ключевых страниц, например, закреплённых или важных для бизнеса;
- Следите за логами и уведомлениями о работе скриптов, чтобы вовремя исправлять ошибки.
Если использовать WP-Cron, помните, что он запускается при посещении сайта, поэтому при низкой посещаемости могут быть задержки. В таких случаях лучше настроить системный cron на сервере.
Выводы и рекомендации по автоматизации удаления старого контента
Автоматизация удаления старого контента в WordPress — эффективный способ поддерживать сайт в порядке, улучшать SEO и ускорять работу. С помощью WP-Cron и простых функций можно настроить регулярную очистку постов, ревизий и комментариев.
Использование готовых плагинов, таких как Clearfy Pro, дополнительно упрощает задачу и даёт дополнительные инструменты для оптимизации.
Главное — соблюдать осторожность, протестировать решения и регулярно делать резервные копии.