set_post_thumbnail_size vs add_image_size en WordPress
¿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.

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.

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

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

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

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.
