Промежуточная генерация изображения очень жесткая. image_resize()
держит его близко к коду и полностью лишен хуков.
Практически единственный вариант для этого - подключить wp_generate_attachment_metadata
и перезаписать сгенерированный WP образ своим собственным (что потребует небольшого количества image_resize()
форка).
Мне нужно это для работы, чтобы я мог поделиться некоторым кодом позже.
Хорошо, это грубый, но рабочий пример. Обратите внимание, что настройка урожая таким образом требует понимания imagecopyresampled()
.
add_filter('wp_generate_attachment_metadata', 'custom_crop');
function custom_crop($metadata) {
$uploads = wp_upload_dir();
$file = path_join( $uploads['basedir'], $metadata['file'] ); // original image file
list( $year, $month ) = explode( '/', $metadata['file'] );
$target = path_join( $uploads['basedir'], "{$year}/{$month}/".$metadata['sizes']['medium']['file'] ); // intermediate size file
$image = imagecreatefromjpeg($file); // original image resource
$image_target = wp_imagecreatetruecolor( 44, 44 ); // blank image to fill
imagecopyresampled($image_target, $image, 0, 0, 25, 15, 44, 44, 170, 170); // crop original
imagejpeg($image_target, $target, apply_filters( 'jpeg_quality', 90, 'image_resize' )); // write cropped to file
return $metadata;
}
image_resize
функцию. Рарст подчеркивал, что вам придется подключиться к процессу изменения размера, но вы сами создадите размеры изображения вручную.Кодекс Wordpress имеет ответ, его ниже.
А также кодекс ссылается на страницу, которая показывает, как действует позиция обрезки.
источник
Я разработал решение этой проблемы, которое не требует взлома ядра: http://bradt.ca/archives/image-crop-position-in-wordpress/
Я также представил патч для ядра: http://core.trac.wordpress.org/ticket/19393
Добавьте себя в качестве Cc в заявке, чтобы показать свою поддержку для его добавления в ядро.
источник
Вы можете использовать плагин Thumbnail Crop Position, чтобы выбрать позицию обрезки ваших миниатюр.
источник
Альтернативное решение здесь: http://pixert.com/blog/cropping-post-featured-thumbnails-from-top-instead-of-center-in-wordpress-with-native-cropping-tool/
Просто добавьте этот код в functions.php, затем используйте плагин «Regenerate Thumbnails» ( https://wordpress.org/plugins/regenerate-thumbnails/ ):
источник