Antworten:
Scheint, dass die Antwort nein ist ...
Ich bin den Kernfunktionen gefolgt und habe eine Sackgasse gefunden. Und habe diesen Beitrag gefunden ( Wie kann ich add_image_size () von oben beschneiden? ), In dem Rarst sagt:
Die Zwischenbilderzeugung ist extrem starr. Image_resize () hält es nahe am Code und es fehlen vollständig Hooks.
Aber nach dem Beispiel der anderen Antwort (von Bradt ) und dem Code, den er veröffentlicht hat ( Image Crop Position in WordPress ), denke ich, dass ich es verstanden habe :)
In der Funktion bt_generate_attachment_metadata
habe ich den Aufruf so geändert, dass er bt_image_make_intermediate_size
den letzten Parameter enthält$size
$resized = bt_image_make_intermediate_size( $file, $size_data['width'], $size_data['height'], $size_data['crop'], $size );
Und änderte den Anfang der Funktion bt_image_make_intermediate_size
wie folgt:
$size
Parameter der Funktion hinzunull
für $suffix
a switch
für unsere neuen Suffixefunction 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 );
Hier eine Kopie des vollständigen Codes mit meinen Mods, nur als Referenz.
Und der Unterschied zum Original .
Sehr wahrscheinlich kann der gesamte Code auf den Punkt gebracht werden, aber auf diese Weise erhalten wir den Vorteil von benutzerdefinierten zugeschnittenen Bildern :))
Sie könnten den Filter image_make_intermediate_size verwenden , aber Sie müssten herausfinden, in welchen Namen Sie die Zwischendatei entsprechend dem erhaltenen $ filename ändern möchten (und die Datei dann umbenennen, da sie zu diesem Zeitpunkt bereits generiert wurde).
Ich generiere nur ein Bild mittlerer Größe für das "Miniaturbild", daher ist es so einfach:
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"