wpcat.ru wordpress WPCat.ru

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

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

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

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

  • Удаления или редактирования контента, где использовалась картинка;
  • Загрузки временных файлов и тестовых изображений;
  • Импорта данных с ошибками или дублирования файлов.

Если не контролировать медиатеку, она разрастается, что приводит к:

  • Увеличению объёма бэкапов и времени их создания;
  • Занятию лишнего места на хостинге;
  • Потере контроля над контентом сайта.

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

Основные способы автоматического удаления старых изображений

Существует несколько подходов к автоматическому удалению:

1. Использование плагинов для очистки медиатеки

Среди популярных плагинов, позволяющих находить и удалять неиспользуемые изображения, выделяются:

  • Media Cleaner — сканирует библиотеку и выявляет неиспользуемые файлы;
  • Cleanup Images — анализирует изображения и удаляет ненужные;
  • Clearfy Pro — из набора оптимизаций, содержит функции очистки медиатеки, доступно на wpshop.ru.

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

2. Реализация собственного решения через Cron и хуки WordPress

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

Пример такой функции ниже.

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

Добавьте следующий код в файл functions.php вашей темы или в отдельный плагин:

function wpcat_delete_unused_images() {
    global $wpdb;
    // Получаем все ID вложений с типом 'image'
    $attachments = $wpdb->get_col("SELECT ID FROM {$wpdb->posts} WHERE post_type = 'attachment' AND post_mime_type LIKE 'image/%'");

    foreach ($attachments as $attachment_id) {
        // Проверяем, используется ли вложение в каких-либо постах
        $count = $wpdb->get_var($wpdb->prepare(
            "SELECT COUNT(*) FROM {$wpdb->postmeta} WHERE meta_value = %d" , $attachment_id
        ));

        $post = get_post($attachment_id);
        $attached_to = $post->post_parent;

        if ($count == 0 && $attached_to == 0) {
            // Проверяем, что изображение не используется в содержимом других постов
            $file_url = wp_get_attachment_url($attachment_id);
            $used = false;

            $posts = $wpdb->get_results("SELECT ID, post_content FROM {$wpdb->posts} WHERE post_status = 'publish' AND post_type IN ('post','page')");

            foreach ($posts as $p) {
                if (strpos($p->post_content, $file_url) !== false) {
                    $used = true;
                    break;
                }
            }

            if (!$used) {
                // Удаляем вложение без перемещения в корзину
                wp_delete_attachment($attachment_id, true);
            }
        }
    }
}

// Регистрируем cron задачу
function wpcat_schedule_image_cleanup() {
    if (!wp_next_scheduled('wpcat_image_cleanup_hook')) {
        wp_schedule_event(time(), 'daily', 'wpcat_image_cleanup_hook');
    }
}
add_action('wp', 'wpcat_schedule_image_cleanup');
add_action('wpcat_image_cleanup_hook', 'wpcat_delete_unused_images');

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

Рекомендации по использованию и безопасности

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

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

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

Дополнительные советы по оптимизации медиатеки WordPress

Использование плагинов оптимизации изображений

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

  • Clearfy Pro — ускоряет сайт и оптимизирует медиа;
  • WP Smush или Imagify — сжатие и оптимизация изображений без потери качества.

Настройка лимитов загрузки и контроля новых файлов

Ограничьте максимальный размер загружаемых изображений и стандартизируйте размеры через функции темы или плагин. Это поможет избежать накопления слишком больших и ненужных файлов.

Заключение

Автоматическое удаление старых и неиспользуемых изображений — эффективный способ поддерживать медиатеку WordPress в порядке и экономить ресурсы хостинга. Используйте готовые плагины или внедряйте собственные решения на базе кода и Cron-задач. Не забывайте делать бэкапы и тестировать изменения.

×
День SEO
Время сделать подарок своему WordPress!
-20% на премиум

шаблоны и плагины

Порадуй свой сайт ⋙