Поддержка Проблемы и решения Чистый WP создает кучу лишних картинок?

  • Всем привет, недавно заметил любопытную вещь. На сайте начали создаваться лишние копии картинок (разные размеры не указанные ни в теме ни в админке wp). Подумал сперва, что может где-то в теме или плагинах что-то свое создается. Установил последнюю версию WordPress, без плагинов, на стандартной теме. В настройках Медиафайлов выставил все по «0». Загружаю картинку в медиафайлы и что я вижу?
    Для небольших картинок все ок, копии не создаются, а для больших (пробовал более 2000px) создаются еще 5 лишних (!).
    -1200×800.jpg
    -1536×1024.jpg
    -1980×1320.jpg
    -2048×1365.jpg
    -scaled.jpg

    Что это за? Зачем они? Это же убийство места на диске для крупных сайтов. откуда они берутся и как убрать?

Просмотр 8 ответов — с 16 по 23 (всего 23)
  • Disable «BIG Image» Threshold

    Спасибо, может быть это и сработает. Но блин, ставить плагин чтобы отключить какие-то левые бестолковые картинки это ппц
    Может быть есть решение попроще?

    Может быть есть решение попроще?

    в этом плагине одна строчка кода и я вам ее уже привел.

    в этом плагине одна строчка кода и я вам ее уже привел.

    Вот ветка обсуждения
    https://make.wordpress.org/core/2019/10/09/introducing-handling-of-big-images-in-wordpress-5-3/

    Увы, не помогает, этот код удаляет не все, 2 размера остаются (

    Добрый день!

    Интересный вопрос. Разобрался.

    Вкратце:
    1. Действительно, дополнительные размеры для больших картинок генерируются.
    2. Оказалось, это новое штатное поведение. Оно появилось в версии 5.3, относительно недавно. Поэтому и «никто не замечал».
    3. Можно отключить с помощью фильтров и напильника (теоретически, лично не тестировал).

    Теперь подробности.

    Первоисточник

    Новое поведение картинок описано в статье «Представляем обработку больших изображений в WordPress 5.3» (текст англоязычный). Обосновывается тем, что огромные изображения зачастую загружаются прямо с камер и нуждаются в подгонке под «веб-оптимальный максимальный размер». (Мнение авторов, не моё. Обсуждать само решение здесь не стоит, лучше сделать это в первоисточнике 🙂 Ниже выжимка из статьи и кое-какие заметки.

    Как происходит обработка полноразмерных картинок

    При загрузке нового изображения WordPresss проверяет его высоту и ширину. Если размер одной из сторон превышает порог big_image (по умолчанию равный 2560px), изображение считается «большим». Порог можно переопределить новым фильтром big_image_size_threshold.

    Если изображение «большое», автоматически создается его уменьшенная версия. Её максимальная ширина и высота ограничены значением порога. Такая уменьшенная версия используется в качестве наибольшего доступного формата изображения. Оригинал при этом сохраняется в папке загрузок и его имя хранится в массиве мета-данных изображения в ключе original_image. Путь к оригиналу можно получить с помощью новой функции wp_get_original_image_path().

    Как отключить всё это

    а) [Официальная рекомендация авторов:] Использовать всё тот же фильтр big_image_size_threshold, возвратив ему false.
    add_filter( 'big_image_size_threshold', '__return_false' );
    Пара нюансов есть в комментариях к первоисточнику. И ещё есть вот это замечание, о том, что может понадобиться отдельно вычистить и промежуточные форматы для ретинных изображений.

    function filter_image_sizes( $sizes) {
    	unset( $sizes['1536x1536']); // disable 2x medium-large size
    	unset( $sizes['2048x2048']); // disable 2x large size
    	return $sizes;
    }
    add_filter('intermediate_image_sizes_advanced', 'filter_image_sizes');
    

    б) [«Ленивый» пользовательский вариант:] Использовать плагин Disable Big Image Treshold.

    в) [Радикально, хардкор:] Перейти на ClassicPress. Тем самым, избавиться от всяких неожиданных сюрпризов, вроде Гутенберга в ядре, внезапно распухающих картинок и прочих сыроватых и неоднозначных идей, которые неконтролируемо навязываются с версии 5.0+.

    Дополнительные заметки в помощь

    1. Возможно, есть смысл просмотреть все зарегистрированные размеры изображений с помощью get_intermediate_image_sizes(). Обычно я пользуюсь ей, чтобы исключить подобные сюрпризы (в том числе в ядре, т.к. в последнее время нововведения появляются быстрее, чем успевают нормально документироваться и читаться).

    2. В критичных проектах с большой базой картинок иногда проще использовать белый лист разрешенных изображений, примерно так:

    function remove_unused_image_sizes() {
    
        $allowed_sizes = array( 'thumbnail', 'medium', 'large' );
        $registered_sizes = get_intermediate_image_sizes();
    
        foreach ( $registered_sizes as $size ) {
            if ( ! in_array( $size, $allowed_sizes ) ) {
                remove_image_size( $size );
            }
        }
    }
    
    add_action('init', 'remove_unused_image_sizes');
    

    Это страхует от распухания папки загрузок, но требует внимательности при подключении плагинов, работающих с изображениями (например, ACF Image Crop и т.п.).

    3. После всех манипуляций лучше пройтись по базе каким-нибудь чистильщиком, чтобы повырезать остатки от неиспользуемых форматов и битые ссылки. Плагинов море, я пользуюсь Media Cleaner Pro.

    Успехов!

    Добрый день!

    Интересный вопрос. Разобрался.

    Респект! Помог ваш код!

    Всем остальным также спасибо что не поленились и попытались помочь!

    Поэтому и «никто не замечал».

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

Просмотр 8 ответов — с 16 по 23 (всего 23)
  • Тема «Чистый WP создает кучу лишних картинок?» закрыта для новых ответов.