Respuestas:
Parece que la respuesta es no ...
He seguido las funciones principales y he encontrado un callejón sin salida. Y encontré esta publicación ( ¿Cómo puedo hacer add_image_size () crop desde la parte superior? ) Donde Rarst dice:
La generación de imágenes intermedias es extremadamente rígida. Image_resize () lo mantiene cerca del código y carece completamente de ganchos.
Pero , siguiendo el ejemplo de la otra respuesta (de bradt ) y el código que publicó ( Posición de recorte de imagen en WordPress ), creo que lo entendí :)
En la función bt_generate_attachment_metadata
, acabo de modificar la llamada para bt_image_make_intermediate_size
incluir el último parámetro$size
$resized = bt_image_make_intermediate_size( $file, $size_data['width'], $size_data['height'], $size_data['crop'], $size );
Y modificó el comienzo de la función de la bt_image_make_intermediate_size
siguiente manera:
$size
parámetro a la funciónnull
valor predeterminado para $suffix
, switch
a nuestros nuevos sufijosfunction bt_image_make_intermediate_size( $file, $width, $height, $crop = false, $size ) {
if ( $width || $height ) {
switch($size) {
case 'thumbnail':
$suffix = 't';
break;
case 'medium':
$suffix = 'm';
break;
case 'large':
$suffix = 'l';
break;
default:
$suffix = null;
break;
}
$resized_file = bt_image_resize( $file, $width, $height, $crop, $suffix, null, 90 );
Aquí , una copia del código completo con mis modificaciones, solo como referencia.
Y la diferencia del original .
Probablemente, todo el código se puede reducir a un nivel básico, pero de esta manera obtenemos el beneficio de imágenes recortadas personalizadas :))
Podría usar el filtro image_make_intermediate_size , pero tendría que averiguar a qué nombre desea cambiar el archivo intermedio, de acuerdo con el $ nombre de archivo que obtenga (y luego renombrar el archivo, porque en este punto ya se ha generado).
Solo genero una imagen de tamaño intermedio para la "miniatura", por lo que es tan simple como esto:
add_filter( 'image_make_intermediate_size', function( $filename ) {
// old 2017_234783843-100x100.jpg
$old = $filename;
// new 2017_234783843-thumbnail.jpg
$new = preg_replace("/(\d+_\d+)-\d+x\d+\.(.*)/i", "$1-thumbnail.$2", $old );
rename($old, $new);
return $new;
} );
"/(.*)-\d+x\d+\.(.*)/i"