Establecer un nombre personalizado para las miniaturas generadas

9

¿Hay algún filtro disponible para establecer la convención de nomenclatura de esas miniaturas generadas automáticamente?

Algo como esto:

  • miniatura_5050150.jpg - > thumbnail-s.jpg
  • thumbnail_300x300.jpg - > thumbnail-m.jpg
  • thumbnail_600x600.jpg - > thumbnail-l.jpg
pregunta Sean Lee 11.05.2012 - 23:05

2 respuestas

4

Parece que la respuesta es no ...

He seguido las funciones básicas y he encontrado un callejón sin salida. Y encontré esta publicación ( ¿Cómo puedo hacer un add_image_size () recortar desde arriba? ) 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 tengo :)

En la función bt_generate_attachment_metadata , acabo de modificar la llamada a bt_image_make_intermediate_size incluyendo 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 inicio de la función bt_image_make_intermediate_size de la siguiente manera:

  • agregó el parámetro $size a la función
  • en lugar del valor predeterminado null a $suffix , un switch a nuestros nuevos sufijos
function 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 mods, solo como referencia.
Y el difiere del original .

Probablemente, todo el código se puede reducir a un hueso, pero de esta manera obtenemos el beneficio de imágenes recortadas personalizadas :))

    
respondido por el brasofilo 13.05.2012 - 00:28
1

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 obtiene (y luego cambiar el nombre del 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;
} );
    
respondido por el Víctor 19.08.2017 - 14:17

Lea otras preguntas en las etiquetas