WordPress: Как отключить сжатие и нарезку миниатюр

от Михаил | Июн 18, 2026 | Уроки

По умолчанию WordPress очень активно вмешивается в процесс загрузки изображений: сжимает JPEG, обрезает картинки больше 2560px, генерирует с десяток промежуточных размеров и даже крутит их по EXIF-данным.

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

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

Разбор кода по шагам

1. Отключаем сжатие JPEG

По умолчанию WP сжимает JPEG-файлы до 82-90% от оригинала. Чтобы сохранить 100% качество, мы фильтруем функции качества.

PHP

// Отключаем сжатие JPEG (Качество от 1-100)
add_filter( 'jpeg_quality', function() { return 100; } );
add_filter( 'wp_editor_set_quality', function() { return 100; } );

Важно: Использовать несуществующую функцию __return_max_int здесь нельзя — это вызовет фатальную ошибку. Явно возвращаем 100 через анонимную функцию.

2. Отменяем масштабирование огромных изображений (-scaled)

Начиная с версии 5.3, WordPress автоматически уменьшает любые картинки шире или выше 2560 пикселей, добавляя к имени файла суффикс -scaled. Отключаем эту "заботу":

PHP

// Запрещаем WordPress создавать уменьшенные версии оригиналов
add_filter( 'big_image_size_threshold', '__return_false' );

3. Блокируем генерацию миниатюр

Каждая загруженная картинка обычно превращается в 5-7 дополнительных файлов (Thumbnail, Medium, Large и т.д.). Если вы выводите только оригиналы (например, через ACF галереи или кастомные блоки), эти дубли просто съедают место на сервере.

PHP

// Убираем все промежуточные размеры при загрузке
add_filter( 'intermediate_image_sizes_advanced', '__return_empty_array' );

// На всякий случай жестко удаляем стандартные размеры, 
// которые могут переопределяться темами или плагинами
add_action( 'init', function() {
    remove_image_size( 'thumbnail' );
    remove_image_size( 'medium' );
    remove_image_size( 'large' );
    remove_image_size( 'medium_large' );
    remove_image_size( '1536x1536' );
    remove_image_size( '2048x2048' );
});

Первый фильтр пресекает генерацию на корню, а хук init страхует нас от "упрямых" тем (особенно актуально для тяжелых премиум-шаблонов), которые регистрируют свои размеры.

4. Запрещаем модификацию по EXIF

Иногда телефоны сохраняют фото боком, прописывая правильную ориентацию в метаданных EXIF. WP пытается исправить это, физически поворачивая картинку и пересохраняя её (что снова ведет к пережатию). Запрещаем:

PHP

// Предотвращаем любые модификации оригинала
add_filter( 'wp_image_maybe_exif_rotate', '__return_false' );

5. Обходим ошибку «Сервер не может обработать изображение»

Загрузка исходников по 10-20 Мегабайт требует колоссальных ресурсов оперативной памяти во время работы PHP-скриптов и библиотек GD/ImageMagick. Если лимитов не хватает, загрузка прервется с ошибкой HTTP.

PHP

// Динамически пытаемся увеличить лимиты памяти и времени выполнения для PHP
@ini_set( 'memory_limit', '512M' );
@ini_set( 'max_execution_time', '300' );

Символ @ подавляет предупреждения, если ваш хостинг-провайдер заблокировал функцию ini_set по соображениям безопасности (что часто бывает на shared-тарифах). Если конфигурация сервера (например, Nginx + PHP-FPM) позволяет переопределение, этот блок спасет вас от 500-х ошибок.

⚠️ Ложка дегтя: SEO и производительность

Внедряя этот код, помните о последствиях:

  • PageSpeed Insights будет недоволен: Отдача 10-мегабайтных оригиналов без адаптивных размеров (srcset) убьет показатели LCP (Largest Contentful Paint).
  • Трафик: Мобильные пользователи с медленным интернетом не скажут вам спасибо.

Когда это оправдано?

Этот сниппет идеален, если вы разрабатываете закрытую систему управления медиа, файловый архив, сайт для продажи стоковых фотографий в исходном качестве, или если оптимизация (конвертация в WebP/AVIF, ресайз) происходит на стороне балансировщика нагрузки или продвинутого CDN, а WordPress выступает исключительно как хранилище эталонных оригиналов.

Лучший вариант использования - включение этого сниппета по необходимости, для загрузки оригинальной фотографии без сжатия.

Весь код целиком

// 🔹 Отключаем сжатие JPEG (Качество от 1-100. Использовать несуществующую функцию __return_max_int нельзя, это вызовет ошибку)
add_filter( 'jpeg_quality', function() { return 100; } );
add_filter( 'wp_editor_set_quality', function() { return 100; } );

// 🔹 Запрещаем WordPress создавать уменьшенные версии оригиналов (без -scaled)
// Именно это отключает принудительное сжатие фото больше 2560px
add_filter( 'big_image_size_threshold', '__return_false' );

// 🔹 Убираем все промежуточные размеры (миниатюры и т.п.)
add_filter( 'intermediate_image_sizes_advanced', '__return_empty_array' );

// 🔹 На всякий случай убираем стандартные размеры, созданные темами и плагинами
add_action( 'init', function() {
    remove_image_size( 'thumbnail' );
    remove_image_size( 'medium' );
    remove_image_size( 'large' );
    remove_image_size( 'medium_large' );
    remove_image_size( '1536x1536' );
    remove_image_size( '2048x2048' );
});

// 🔹 Предотвращаем любые модификации оригинала (например, поворот EXIF)
add_filter( 'wp_image_maybe_exif_rotate', '__return_false' );

// =====================================================================
// 🔹 ОБХОДА ОШИБКИ «СЕРВЕР НЕ МОЖЕТ ОБРАБОТАТЬ ИЗОБРАЖЕНИЕ»
// =====================================================================

// Динамически пытаемся увеличить лимиты памяти и времени выполнения для PHP 
// (Сработает, если хостинг не блокирует функцию ini_set)
@ini_set( 'memory_limit', '512M' );
@ini_set( 'max_execution_time', '300' );

Было полезно?

Пожалуйста, расскажите об этом друзьям!

VK
Pinterest
OK
Telegram
Linkedin
WhatsApp
Viber
Reddit

* Meta / Facebook — сервисы, предоставляемые организацией, признанной экстремистской

Готовы получать больше клиентов?

Ваш сайт может быть не просто визиткой, а полноценным инструментом продаж — работать 24/7, привлекать заявки и усиливать доверие к вашему бизнесу. Оставьте заявку — и мы подскажем, какое решение подойдёт именно вам.

Вам может быть интересно

Telegram Почта info@pureseo.ru Телефон +7 (903) 757-15-01