Задача: вывести обрезанную картинку определенных размеров (размеры задаются в админке в пикселях).
Попробовал функцию
the_post_thumbnail()the_post_thumbnail( array( 360, 360 ) );
Но изображение не обрезается, пропорции сохраняются.
Поискал еще варианты, нашел функцию
wp_get_image_editor(), которая умеет расайзить и обрезать картинки, но для нее нужен не ID картинки, а путь к ней на сервере, и возвращает функция тоже путь к картинке на сервере, поэтому пришлось дописать немного (взял за основу функцию
image_make_intermediate_size()):
function get_intermediate_size_image_src( $file, $width, $height, $crop = false ) {
if ( $width || $height ) {
$editor = wp_get_image_editor( $file );
if ( is_wp_error( $editor ) || is_wp_error( $editor->resize( $width, $height, $crop ) ) )
return false;
$resized_file = $editor->save();
if ( ! is_wp_error( $resized_file ) && $resized_file ) {
$upload_dir = wp_upload_dir();
return str_replace( $upload_dir[ 'basedir' ], $upload_dir[ 'baseurl' ], $resized_file[ 'path' ] );
}
}
return false;
}
Но это смахивает на велосипед, неужели нет более простого способа отресайзить и обрезать картинку в вордпрессе?
Вариант задать свой размер с кропом (см. ниже) не подходит, так как нужно чтобы админ мог в админке в пикселях задать нужный ему размер картинки для вывода.
add_image_size('square_small__crop', 360, 360, true);