set_post_thumbnail_size vs add_image_size

11

¿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.

Greeso
fuente

Respuestas:

26

Cuando se carga 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, se vuelve fácil usar diferentes tamaños, de la misma imagen, para diferentes propósitos.

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

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

El tamaño en píxeles para estos 3 tamaños se puede establecer en el panel de WordPress, debajo del menú Settings -> Media.

Ahora, la función add_image_sizese utiliza para registrar un nuevo tamaño, que se suma a los 3 valores predeterminados.

Cada tamaño registrado puede ser recuperada usando su nombre, en alguna función de WordPress, por ejemplo wp_get_attachment_image_src, wp_get_attachment_image, wp_get_attachment_link.

Todas estas funciones aceptan un parámetro $sizeque debería ser el nombre de uno de los tamaños registrados (uno de los 3 estándares, o uno de los tamaños personalizados registrados con add_image_size).

Si 'full'se usa como $sizeargumento, se devuelve la imagen original y no se cambia el tamaño.

Además de las funciones mencionadas anteriormente, hay otras dos funciones que utilizan tamaños de imagen: get_the_post_thumbnaily the_post_thumbnail.

Estas dos funciones obtienen (la primera) y hacen eco (la segunda) de la imagen que se establece como "Imagen destacada" para una publicación.

Lo que estas funciones devuelven (o repiten) es una imgetiqueta html completa , algo así como

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

Entonces, ¿cuál es el tamaño utilizado?

Si $sizese pasa a como segundo argumento (primero es $postid), estas funciones devuelven la imagen en ese tamaño. De lo contrario, estas funciones de búsqueda para un tamaño de la imagen registrada con el nombre de: post-thumbnail.

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

Entonces

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

es un atajo para

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

Si no ha llamado set_post_thumbnail_size(lo que significa que el tamaño 'post-thumbnail'no se creó), WordPress usará el tamaño thumb, e incluso si este tamaño no está disponible, WordPress usará la imagen original, la que no ha cambiado de tamaño.

El registro de tamaños de imagen personalizados puede ser muy útil al diseñar un tema, pero es importante no abusar: cada imagen cargada se copia y cambia de tamaño para todos los tamaños registrados, por lo que registrar muchos tamaños ralentizará en gran medida el proceso de carga de imágenes.

Una nota:

Tenga en cuenta que cuando WordPress crea copias a escala de una imagen, nunca la amplía, sino que solo hace copias más pequeñas: por ejemplo, si la imagen original es de 400x500px y el tamaño de imagen 'medio' es de 800x600px, no se crea tamaño mediano y más grande .

Por lo tanto, registrar un tamaño de imagen nunca da la seguridad de que realmente exista un archivo de imagen para cada tamaño registrado en la carpeta de contenido de WordPress. Incluso porque los tamaños de imagen registrados cambian fácilmente: cambiar la configuración, cambiar temas, etc.

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

Si uno necesita confiar en tamaños de imagen específicos después de que algunas imágenes ya están cargadas (por ejemplo, después de cambiar temas), entonces el complemento Regenerar miniaturas será un salvavidas.

gmazzap
fuente
2
Increíble. Hubiera hecho clic 5 veces debido a su respuesta, pero el sitio no lo permite. Gracias.
Greeso
De
nada
Solo una pregunta más: ¿Qué sucede si no he llamado a set_post_thumbnail_size (lo que significa que no se crea el tamaño 'post-thumbnail', entonces llamo a_post_thumbnail. ¿Qué va a pasar? (Porque the_post_thumbnail intentará usar post-thumbnail como un param)
Greeso
@GM, aprobado por una explicación lúcida
Istiaque Ahmed
¡Esta respuesta es muy útil! Sin embargo, creo que esto: set_post_thumbnail_size( 150, 150 ); If you haven't called set_post_thumbnail_size (which means the size 'post-thumbnail' is not created), WordPress will use the size thumb, and if even this size is not available, WordPress will use the original image, the one not resized. ... es incorrecto. En mi experiencia al probar esto, si set_post_thumbnail_size()no se ha llamado, WP vuelve a la imagen a tamaño completo.
Travis Northcutt
1

De Codex:

set_post_thumbnail_size

Establezca las dimensiones predeterminadas de Imagen destacada (anteriormente Publicar miniatura). Para registrar tamaños de imagen adicionales para Imágenes destacadas, use: 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 publicación) con las dimensiones especificadas cuando cargue una nueva imagen.

Krzysiek Dróżdż
fuente
¿Puedo usar add_image_size sin usar set_post_thumbnail_size?
Greeso
Sí, por supuesto.
Krzysiek Dróżdż