Проміжне генерування зображення надзвичайно жорстке. 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;
}