Как предотвратить генерацию 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.
birgire
Удаление размера изображения таким же способом, как это делает ядро 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/