WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru WPmentor - Ищем топовых специалистов по WordPress, чтобы помочь вам заработать

Суффикс «-scaled» у картинки, или что WP делает с большими изображениями

С версии WordPress 5.3 при загрузке очень больших картинок создается её меньшая копия, так чтобы при запросе full размера вместо оригинала использовалась эта копия картинки. Чтобы при загрузке, скажем, картинки размером 5000x2000 на сайте эта картинка нигде не использовалась, а использовалась её уменьшенная до «приличных» размеров копия. По умолчанию «приличным» размером считается картинка не больше 2560 пикселей в ширину или высоту.

Подробнее, как это работает.

Допустим, мы загружаем картинку размером 5000x2000px. WordPress в этом случае, кроме создания прочих миниатюр, создаст из этой картинки копию размером 2560x1024px (пропорционально впишет её в размер 2560) и сохранит её в папку загрузок uploads с новым названием {ИМЯ_КАРТИНКИ}-scaled.{EXT}. Далее, заменит путь оригинальной картинки в метаданных, на этот созданный путь, чтобы эта копия считалась оригиналом. А также, сохранит имя исходной картинки в метаданные под ключом original_image, см. _wp_image_meta_replace_original().

Созданная копия оригинала с «приличным» размером, теперь считается оригинальной картинкой и путь до неё записан в метаполе _wp_attached_file. И теперь функция, которая обычно возвращает оригинальный путь get_attached_file() или оригинальный URL wp_get_attachment_url() и другие функции, которые должны вернуть оригинальную картинку, будут возвращать новый -scaled путь/URL.

Файл исходной картинки не удаляется и находится в папке uploads и путь или URL к ней можно получить через новые для WP 5.3 функции:

Уменьшенная версия будет создаваться для любой картинки ширина или высота которой больше чем указанный порог - 2560px.

Порог («приличный» размер, о котором идет речь) можно изменить через фильтр big_image_size_threshold вернув в нем нужный размер:

# Изменим `-scaled` размер (максимально допустимый размер) картинки по ширине/высоте
add_filter( 'big_image_size_threshold', function(){
	return 1600;
} );

Или можно полностью отключить всю эту «-scaled» логику вернув в фильтре 0:

# Отменим `-scaled` размер - ограничение максимального размера картинки 
add_filter( 'big_image_size_threshold', '__return_zero' );

-

Комментариев нет