Как предотвратить генерацию WordPress изображений среднего размера 768px при загрузке?
Я предотвращаю генерацию WordPress размеров изображений thumbnail
, medium
и large
для загружаемых в медиатеку изображений, устанавливая их размеры в 0
через панель управления: Настройки -> Медиафайлы
.
Я также удалил все вызовы функций add_image_size
и set_post_thumbnail_size
из файла functions.php
моей темы.
Однако при загрузке новых изображений WordPress всё равно создаёт версию шириной 768px
(называемую 'medium_large') из оригинального изображения. Я полагаю, это связано с этим обновлением.
Есть ли способ полностью отключить эту функцию?

Чтобы удалить размер изображения medium_large
, вы можете попробовать убрать его с помощью фильтра intermediate_image_sizes
:
add_filter( 'intermediate_image_sizes', function( $sizes )
{
return array_filter( $sizes, function( $val )
{
return 'medium_large' !== $val; // Исключаем 'medium_large'
} );
} );
Если вы пытаетесь удалить все промежуточные размеры, то можно использовать такой вариант:
add_filter( 'intermediate_image_sizes', '__return_empty_array', 999 );
где __return_empty_array
() — это встроенная функция ядра WordPress.
Стоит отметить, что удалить этот размер с помощью
remove_image_size( 'medium_large' );
не получится, потому что он не добавляется через add_image_size()
и, следовательно, не является частью глобального массива $_wp_additional_image_sizes
или функции wp_get_additional_image_sizes()
.

да, также можно изменить опцию medium_large_size_w
на 0
, но мы не можем сделать это через /wp-admin/options.php
, потому что там, кажется, есть проблема с нулевым значением (это как раз то, что я попробовал сначала, перед тем как написать ответ ;-), поэтому нам нужно установить это через Settings API или вручную в таблице wp_options
.

Удаление размера изображения таким же способом, как это делает ядро WordPress:
add_filter('intermediate_image_sizes', function($sizes) {
return array_diff($sizes, ['medium_large']);
});
Имейте в виду, что medium_large
обычно является хорошим размером для использования в srcset
, удаляйте его только если вы понимаете, как работает srcset
, и если у вас уже есть аналогичные размеры.

это будет работать
function paulund_remove_default_image_sizes( $sizes) {
unset( $sizes['medium_large']);
return $sizes;
}
add_filter('intermediate_image_sizes_advanced','paulund_remove_default_image_sizes');
https://developer.wordpress.org/reference/hooks/intermediate_image_sizes_advanced/
