La generación de imágenes intermedias es extremadamente rígida. image_resize()
lo mantiene cerca del código y carece por completo de ganchos.
Prácticamente la única opción para esto es conectar wp_generate_attachment_metadata
y sobrescribir la imagen generada por WP con la suya (que necesitará un poco de image_resize()
bifurcación).
Necesito esto para el trabajo, así que podría compartir algún código más tarde.
Ok, este es un ejemplo tosco pero funcional. Tenga en cuenta que configurar el cultivo de esta manera requiere comprender 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;
}