Отключить масштабирование больших изображений в WordPress

Вопрос или проблема

WordPress удивителен, и я большой поклонник этого.

Но версия 5.3 принесла мне (и многим другим, 1, 2, 3, 4…) большую проблему с новой принудительной функцией автоматического уменьшения больших изображений.

Я пытаюсь отключить ее (потому что она мне не нужна/не хочется, и потому что она не работает) с помощью следующего фильтра:

add_filter('big_image_size_threshold', '__return_false');

Где функция обратного вызова __return_false() — это просто обертка WordPress для возвращения false.

Но она не работает, я все еще получаю ошибку, что означает, что функция не отключена.

То же самое происходит и с рекомендованным плагином. Это не устраняет ошибку.

Какая ошибка?: Постобработка не удалась, пожалуйста, уменьшите изображение до 2500 пикселей.

Я очистил кэш браузера, установил версию PHP 7.2 и активировал mbstring (как рекомендовано другими относительно этой же проблемы).

Ошибка возникает при некоторых загрузках, а не при всех:

И она никак не связана с загрузкой больших изображений.

Вот несколько фактов, описывающих проблему:

  • Я делаю случайные скриншоты случайных областей (значит, случайные размеры).
  • Я всегда делаю маленькие прямоугольники (максимум 800px x 400px)
  • Некоторые изображения загружаются нормально.
  • Другие изображения не загружаются.
  • Но конкретные изображения, которые работают, всегда работают, если пробовать загружать несколько раз.
  • А конкретные изображения, которые не работают, никогда не работают, даже если попробовать загружать несколько раз (даже переименовывая файл).

Теперь это работает как ожидалось (отключено масштабирование), при следующих настройках:

В моем файле functions.php

add_filter('big_image_size_threshold', '__return_false');

В настройках медиабиблиотеки WP:

enter image description here

Я нашел сайт клиента, где фильтр не работал. Я провел множество тестов на тестовом сайте, и фильтр сработал. Вопрос остается в веб-сайте, использующем тему Avada. Avada имеет встроенный в настройки темы размер порогового значения, чтобы вы могли настроить размер уменьшенного изображения. Это переопределяло место, где я пытался отключить его в моем основном плагине.

Сначала я попытался добавить приоритет 9999 к функции add_filter, чтобы, надеюсь, оно выполнялось позже, но в этом случае это, похоже, не работает (я все еще тестирую это). Я установил пороговый размер на 0 в Avada, и это успешно отключило масштабирование больших изображений.

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

Я использовал этот плагин для тестирования такого типа на рабочих сайтах, WP-Staging

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

// Удаление размеров изображений
function zgwd1010_filter_image_sizes($sizes) {
    unset($sizes['1536x1536']); // отключить средне-большой размер 2x
    unset($sizes['2048x2048']); // отключить большой размер 2x
    return $sizes;
}
add_filter('intermediate_image_sizes_advanced', 'zgwd1010_filter_image_sizes');

У меня такая же проблема с невозможностью отключить big_image_size_threshold (одна из худших новых функций, когда-либо выпущенных WordPress) для шутки я попробовал удалить кавычки вокруг return false, но это не решает проблему. Пример в Codex действительно показывает кавычки. https://codex.wordpress.org/Function_Reference/_return_false

Я открыл тикет в трекере core на этот счёт, возможная ошибка.

Я не знаю, почему __return_false не работает, но что-то вроде этого работает:

function gc_big_image_size_threshold($threshold) {
    return 9999; // новое пороговое значение
}
add_filter('big_image_size_threshold', 'gc_big_image_size_threshold', 100, 1);

Недавно у меня были проблемы с заставлением этого фильтра работать с ‘ __return_false’, но я смог решить проблему. Что оказалось решающим для меня, так это добавление параметра приоритета к функции add_filter (в этом случае 100), чтобы она выполнялась позже.

add_filter('big_image_size_threshold', '__return_false', 100, 1);

Ответ или решение

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

Теория

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

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

add_filter( 'big_image_size_threshold', '__return_false' );

Тем не менее, не всегда этот метод срабатывает из-за конфликта с темами или плагинами. Поэтому важно разобраться с настройками конкретной темы или плагина, который может переопределять поведение этого фильтра.

Примеры

  1. Конфликт с темами и плагинами: Определенные темы, такие как Avada, имеют встроенные параметры, которые могут переопределять глобальные настройки сайта. В таких случаях полезно либо изменить настройки темы, либо установить фильтр с более высоким приоритетом, чтобы он выполнялся после всех других зависимостей.

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

    add_filter( 'big_image_size_threshold', '__return_false', 100, 1 );
  3. Изменение порога: Вместо полного отключения масштабирования можно изменить пороговое значение, задав его гораздо выше стандартного:

    function gc_big_image_size_threshold( $threshold ) {
       return 9999; // новое пороговое значение
    }
    add_filter('big_image_size_threshold', 'gc_big_image_size_threshold', 100, 1);
  4. Удаление промежуточных размеров: Для полного контроля над размерами, создаваемыми WordPress, имеет смысл также отключить создание некоторых промежуточных размеров изображений:

    function zgwd1010_filter_image_sizes( $sizes) {
       unset( $sizes['1536x1536']); // отключение промежуточных размеров
       unset( $sizes['2048x2048']);
       return $sizes;
    }
    add_filter('intermediate_image_sizes_advanced', 'zgwd1010_filter_image_sizes');

Применение

Что делать, если фильтр не работает:

  1. Проверка конфликтов: Используйте отключение тем и плагинов для выявления конфликтов. Временно переключите тему на одну из стандартных тем WordPress и отключайте плагины по одному, чтобы выявить виновника.

  2. Использование инструментов: Воспользуйтесь плагином WP-Staging для создания тестового сайта, что позволит делать изменения без риска нарушить работу основного сайта.

  3. Исследование кода: Проверьте файлы тем и плагинов на наличие установок big_image_size_threshold. Возможно, они содержат параметры, переопределяющие ваши настройки.

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

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

Оцените материал
Добавить комментарий

Капча загружается...