Как автоматически удалять старые чужие сайты из базы данных WordPress

|

Проблема управления мультисайтом WordPress: когда и зачем удалять старые сайты

Если у вас настроен мультисайт WordPress (Multisite), со временем количество созданных сайтов может разрастаться, включая неактивные, тестовые или заброшенные чужие сайты. Это приводит к росту базы данных и замедлению работы сети. Важно периодически проводить уборку — удалять сайты, которые давно не обновлялись или не используются.

Ручное удаление каждого сайта неудобно и подвержено ошибкам, особенно если сайтов сотни. Поэтому полезно автоматизировать этот процесс, чтобы экономить время и поддерживать чистоту базы.

В этой статье мы рассмотрим, как настроить автоматическое удаление старых сайтов в мультисайте WordPress на основе даты последнего обновления, а также обзор плагинов, которые могут помочь в управлении мультисайтом.

Определение критериев удаления сайтов: какие параметры учитывать

Для автоматизации нужно чётко определить, какие сайты считать «старыми» или «заброшенными». Основные критерии:

В большинстве случаев достаточно проверить дату последнего обновления публикации — это простой и надёжный способ.

Пример функции для удаления старых сайтов в мультисайте WordPress

Ниже пример кастомной функции wpreboot_delete_old_sites(), которая перебирает все сайты сети и удаляет те, где последний пост старше 180 дней. Код можно добавить в файл functions.php вашей темы или в отдельный плагин.

function wpreboot_delete_old_sites() {
    if (!is_multisite()) {
        return;
    }
    $sites = get_sites(['number' => 0]);
    $threshold = strtotime('-180 days');
    foreach ($sites as $site) {
        $blog_id = $site->blog_id;
        switch_to_blog($blog_id);

        $last_post = new WP_Query([
            'post_type' => 'any',
            'posts_per_page' => 1,
            'orderby' => 'modified',
            'order' => 'DESC',
            'fields' => 'ids',
        ]);

        if ($last_post->have_posts()) {
            $last_post_id = $last_post->posts[0];
            $last_modified = get_post_modified_time('U', false, $last_post_id);
            if ($last_modified < $threshold) {
                wpreboot_delete_site_safely($blog_id);
            }
        } else {
            // Нет постов, можно удалить
            wpreboot_delete_site_safely($blog_id);
        }

        restore_current_blog();
    }
}

function wpreboot_delete_site_safely($blog_id) {
    // Запрет удалять основной сайт
    if ($blog_id == 1) {
        return;
    }
    // Функция wp_delete_site доступна с WP 5.1
    if (function_exists('wp_delete_site')) {
        wp_delete_site($blog_id);
        error_log("Сайт с ID {$blog_id} удалён автоматически.");
    }
}

Этот код можно запускать по крону — добавьте хук в wp_schedule_event для регулярного запуска.

Автоматизация удаления через WP-Cron

Чтобы функция запускалась автоматически, добавьте планировщик событий:

function wpreboot_schedule_delete_old_sites() {
    if (!wp_next_scheduled('wpreboot_cron_delete_old_sites')) {
        wp_schedule_event(time(), 'daily', 'wpreboot_cron_delete_old_sites');
    }
}
add_action('wp', 'wpreboot_schedule_delete_old_sites');

add_action('wpreboot_cron_delete_old_sites', 'wpreboot_delete_old_sites');

Теперь каждые сутки система будет проверять и удалять «старые» сайты. Если хотите настроить вручную — используйте WP-CLI или запускайте функцию через админку.

Обзор плагинов для управления мультисайтом и удаления сайтов

Если кодирование — не ваш конек, есть готовые решения:

Для автоматической очистки по времени можно использовать кастомные скрипты, как выше, или расширить их с помощью плагинов Clearfy Pro, который оптимизирует базу и может помочь с удалением ненужных данных.

Дополнительные советы по безопасности и резервному копированию

Перед автоматическим удалением всегда делайте резервную копию базы и файлов. Используйте плагины типа UpdraftPlus, чтобы иметь возможность быстро восстановить данные.

Рекомендуется также логировать все операции удаления, чтобы отслеживать, какие сайты были удалены и когда.

Если в мультисайте есть сайты с разными владельцами, уведомляйте их заранее о возможном удалении из-за неактивности.

Итоги и рекомендации по внедрению автоматического удаления

Автоматизация удаления старых сайтов мультисайта помогает поддерживать базу данных в порядке, снижает нагрузку на сервер и упрощает управление сетью.

Главное — правильно определить критерии и обеспечить безопасность процесса через резервные копии и логи.

Используйте приведённый пример кода как основу и адаптируйте под свои задачи. Для расширенного управления рассмотрите плагины, которые интегрируются с мультисайтом и дают удобный интерфейс.

Как создать динамические таблицы в WordPress с помощью шорткодов
26.02.2026
WooCommerce: как автоматически удалять товар из корзины после оплаты
20.04.2026
Как использовать WP-CLI для автоматизации управления WordPress
09.03.2026
WooCommerce: как автоматически удалять заказы по определённому статусу
31.05.2026
Как использовать REST API WordPress для создания приложений
12.11.2025
×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше