Risposte:
Sembra che la risposta sia no ...
Ho seguito le funzioni principali e ho trovato un vicolo cieco. E ho trovato questo post ( Come posso fare in modo che add_image_size () ritagli dall'alto? ) Dove Rarst dice:
La generazione di immagini intermedie è estremamente rigida. Image_resize () lo tiene vicino al codice e manca completamente di hook.
Ma , seguendo l'esempio dell'altra risposta (da Bradt ) e il codice che ha pubblicato ( Image Crop Position in WordPress ), penso di averlo ottenuto :)
Nella funzione bt_generate_attachment_metadata
, ho appena modificato la chiamata per bt_image_make_intermediate_size
includere l'ultimo parametro$size
$resized = bt_image_make_intermediate_size( $file, $size_data['width'], $size_data['height'], $size_data['crop'], $size );
E modificato l'inizio della funzione bt_image_make_intermediate_size
come segue:
$size
parametro alla funzionenull
valore predefinito a $suffix
, a switch
ai nostri nuovi suffissifunction 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 );
Ecco , una copia del codice completo con le mie mod, solo per riferimento.
E il diff dall'originale .
Molto probabilmente, tutto il codice può essere ridotto a un osso nudo, ma in questo modo otteniamo il vantaggio di immagini ritagliate personalizzate :))
Potresti usare il filtro image_make_intermediate_size , ma dovresti capire a quale nome vuoi cambiare il file intermedio, in base al $ nomefile che ottieni (e quindi rinominare il file, perché a questo punto è già stato generato).
Genero solo un'immagine di dimensioni intermedie per la "miniatura", quindi è semplice come questa:
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"