set_post_thumbnail_size vs add_image_size en WordPress

1 ago 2013, 10:48:48
Vistas: 17.2K
Votos: 14

¿Cuál es la diferencia entre set_post_thumbnail_size y add_image_size? ¿Es set_post_thumbnail_size para todas las imágenes y add_image_size para dimensionar imágenes individualmente?

Gracias.

0
Todas las respuestas a la pregunta 2
5
32

Cuando se sube una imagen en WordPress, se guarda en su tamaño original y también como algunas copias redimensionadas en diferentes tamaños. De esta manera, es fácil usar diferentes tamaños de la misma imagen para distintos propósitos.

Por defecto, WordPress crea 3 copias en 3 tamaños diferentes:

  • 'thumb'
  • 'medium'
  • 'large'

El tamaño en píxeles para estas 3 dimensiones se puede configurar en el panel de WordPress, en el menú Settings -> Media (Ajustes -> Medios).

La función add_image_size se utiliza para registrar un nuevo tamaño, que se suma a los 3 predeterminados.

Cada tamaño registrado se puede recuperar usando su nombre en alguna función de WordPress, como wp_get_attachment_image_src, wp_get_attachment_image, wp_get_attachment_link.

Todas estas funciones aceptan un parámetro $size que debe ser el nombre de uno de los tamaños registrados (uno de los 3 estándar o uno de los tamaños personalizados registrados con add_image_size).

Si se usa 'full' como argumento $size, se devuelve la imagen original, la que no ha sido redimensionada.

Además de las funciones mencionadas, hay otras dos funciones que hacen uso de los tamaños de imagen: get_the_post_thumbnail y the_post_thumbnail.

Estas dos funciones obtienen (la primera) y muestran (la segunda) la imagen que se establece como "Imagen destacada" para una entrada.

Lo que devuelven (o muestran) estas funciones es una etiqueta HTML img completa, algo como:

<img scr="http://www.example.com/wp-content/2013/08/image-200x200.jpg" />

Entonces, ¿qué tamaño se utiliza?

Si se pasa un $size como segundo argumento (el primero es $postid), estas funciones devuelven la imagen en ese tamaño. De lo contrario, estas funciones buscan un tamaño de imagen registrado con el nombre: post-thumbnail.

Este no es uno de los 3 tamaños predeterminados; de hecho, es el cuarto tamaño estándar (el quinto se considera full) y puedes registrarlo llamando a set_post_thumbnail_size.

Por lo tanto:

set_post_thumbnail_size( $width, $height, $crop );

es un atajo para:

add_image_size( 'post-thumbnail', $width, $height, $crop );

Si no has llamado a set_post_thumbnail_size (lo que significa que el tamaño 'post-thumbnail' no está creado), WordPress usará el tamaño thumb, y si incluso este tamaño no está disponible, WordPress usará la imagen original, la que no ha sido redimensionada.

Registrar tamaños de imagen personalizados puede ser muy útil al diseñar un tema, pero es importante no abusar: cada imagen subida se copia y redimensiona para todos los tamaños registrados, por lo que registrar muchos tamaños ralentizará considerablemente el proceso de carga de imágenes.

Una nota:

Tenga en cuenta que cuando WordPress crea copias escaladas de una imagen, nunca la agranda, solo hace copias más pequeñas: por ejemplo, si la imagen original es de 400x500px y el tamaño 'medium' es de 800x600px, no se creará el tamaño medium ni los más grandes.

Por lo tanto, registrar un tamaño de imagen nunca garantiza que exista un archivo de imagen para cada tamaño registrado realmente en la carpeta de contenido de WordPress. Además, los tamaños de imagen registrados cambian fácilmente: cambiar ajustes, cambiar temas, etc.

Cuando un tamaño de imagen cambia, por cualquier motivo, el cambio afecta a las imágenes subidas después de ese cambio; las imágenes subidas antes no cambian de dimensiones y no se redimensionan ni se vuelven a guardar.

Si se necesita confiar en tamaños de imagen específicos después de que ya se hayan subido algunas imágenes (por ejemplo, después de cambiar de tema), el plugin Regenerate Thumbnails será un salvavidas.

1 ago 2013 12:03:18
Comentarios

Increíble. Hubiera hecho clic 5 veces por tu respuesta pero el sitio no lo permite. Gracias.

Greeso Greeso
1 ago 2013 12:18:53

De nada, con uno es suficiente :)

gmazzap gmazzap
1 ago 2013 12:22:03

Solo una pregunta más: ¿Qué pasa si no he llamado a set_post_thumbnail_size (lo que significa que el tamaño 'post-thumbnail' no está creado), luego llamo a the_post_thumbnail. ¿Qué va a pasar? (porque the_post_thumbnail intentará usar post-thumbnail como parámetro).

Greeso Greeso
1 ago 2013 13:15:55

@G.M., ¡Excelente explicación, muy clara!

Istiaque Ahmed Istiaque Ahmed
6 ene 2014 10:12:05

¡Esta respuesta es muy útil! Sin embargo, creo que esto:

set_post_thumbnail_size( 150, 150 ); Si no has llamado a set_post_thumbnail_size (lo que significa que el tamaño 'post-thumbnail' no está creado), WordPress usará el tamaño thumb, y si incluso este tamaño no está disponible, WordPress usará la imagen original, la que no ha sido redimensionada.

...es incorrecto. Según mi experiencia probando esto, si set_post_thumbnail_size() no ha sido llamado, WP recurre a la imagen en tamaño completo.

Travis Northcutt Travis Northcutt
26 nov 2015 00:09:34
2

Del Codex:

set_post_thumbnail_size

Establece las dimensiones predeterminadas para la Imagen Destacada (anteriormente Miniatura de Entrada). Para registrar tamaños de imagen adicionales para Imágenes Destacadas usa: add_image_size().

add_image_size

Registra un nuevo tamaño de imagen. Esto significa que WordPress creará una copia de la Imagen Destacada (anteriormente conocida como miniatura de entrada) con las dimensiones especificadas cuando subas una nueva imagen.

1 ago 2013 10:55:18
Comentarios

¿Puedo usar add_image_size sin utilizar set_post_thumbnail_size?

Greeso Greeso
1 ago 2013 11:08:07

Sí, por supuesto.

Krzysiek Dróżdż Krzysiek Dróżdż
1 ago 2013 13:52:38