Обрезка миниатюр с помощью add_image_size
Я хочу, чтобы миниатюры на определенной странице были точно 300px
× 100px
. В настоящее время изображения уменьшаются до достижения отметки 300 или 100 пикселей. Как мне обрезать изображение точно до размера 300 × 100 (желательно без искажения изображения).
// functions.php:
// Добавляем поддержку миниатюр, если функция существует
if ( function_exists( 'add_image_size' ) ) add_theme_support( 'post-thumbnails' );
// Добавляем различные размеры изображений
if ( function_exists( 'add_image_size' ) ) {
add_image_size( 'post-thumb', 620, 207, true );
add_image_size( 'home-thumb', 220, 180, true );
add_image_size( 'index-thumb', 300, 100, true );
}
// index.php:
// Выводим миниатюру, если она существует
if ( has_post_thumbnail()) the_post_thumbnail('index-thumb');

Обратитесь к документации Codex по функции add_image_size()
:
<?php add_image_size( $name, $width, $height, $crop ); ?>
Параметр $crop
является ключевым:
(boolean) (опционально) Обрезать изображение или нет. False - режим мягкого пропорционального изменения размера; True - режим жесткого обрезания.
По умолчанию: false
То есть:
- False (по умолчанию): box-resize - изменение размера изображения с сохранением пропорций (подгонка под ограничивающие размеры)
- True: hard-crop - жесткое обрезание изображения точно до указанных размеров
Таким образом, ваш код должен работать:
// Добавляем поддержку темой
add_theme_support( 'post-thumbnails' );
// Регистрируем пользовательские размеры изображений
add_image_size( 'post-thumb', 620, 207, true );
add_image_size( 'home-thumb', 220, 180, true );
add_image_size( 'index-thumb', 300, 100, true );
Если вы обнаружили, что изображения не отображаются должным образом, проверьте следующее:
- Для изображений, добавленных до реализации этих пользовательских размеров, вам потребуется перегенерировать миниатюры для этих изображений
- Размеры изображений не будут созданы для изображений, которые не имеют хотя бы указанных размеров. Убедитесь, что ваши изображения имеют хотя бы размеры самого большого указанного жесткого обрезания. (Изображения с изменением размера с сохранением пропорций менее требовательны и должны быть лишь не меньше наименьшего из указанных размеров.)

Ознакомьтесь с этим плагином
- он создаёт неограниченное количество размеров изображений (обрезанных и нет)
- добавляет размеры в поле выбора медиафайлов
- добавляет CSS-фильтры и анимации
- может управлять водяными знаками

Параметр true фактически обрезает изображение. Если установить false, изображение не будет обрезано, а будет изменено в размере.

Вы уверены, что ваши изображения действительно Больше, чем размеры, которые вы задали для миниатюр? И пробовали ли вы убрать условия "if"?

Я пробовал использовать изображения большего размера. Результат тот же. Удаление условий if приводит к ошибке.
