Imágenes responsive en WordPress

¿Que son las imágenes responsive?

Las imágenes reponsive son aquellas imágenes que automáticamente carga la mejor versión para la resolución de tu equipo, esto permite con una misma etiqueta HTML cargar una imagen de alta resolución para una computadora con pantalla HiDPI (Retina Display) y una imagen de baja resolución para un dispositivo móvil con una pantalla de baja calidad. (Si quieres leer mas documentación te recomiendo leer la entrada de <img> en MDN).

El código HTML necesario es como cualquier <img> para dar compatibilidad a las páginas existentes, pero adicionalmente se agrega un atributo srcset para poder especificar la imagen correspondiente a cada resolución y también se agrega el atributo sizes para definir las reglas de cuando usar cada imagen.

Cómo generar el código en WordPress

A partir de WordPress 4.4 ahora podemos contar imágenes responsive de forma automática, usando las funciones de este CMS obtendrás el código HTML para crear imágenes adaptables, pero probablemente si tienes algún código donde generabas las etiquetas de estas imágenes manualmente, necesitaras llamar a varias funcionales para hacerlo.

A continuación te explicare cómo es el proceso, el primer paso es obtener los valores de los atributos src y srcset, en este caso pasamos full como tamaño para obtener la imagen en su mayor resolución:

$img_src = wp_get_attachment_image_url( $attach_id, 'full' );
$img_srcset =  wp_get_attachment_image_srcset( $attach_id, 'full' );

Generamos la etiqueta sizes para los tipos de imágenes que queremos mostrar:

$wp_sizes   = array('full', 'large', 'medium', 'thumbnail');
$img_sizes  = '';

foreach ( $wp_sizes as $wp_size ) {
   $img_sizes .=  wp_calculate_image_sizes( $wp_size,  $img_src, null,  $attach_id );
}

Luego podemos generar el HTML de la etiqueta img:

$img = sprintf('<img src="%s" srcset="%s" sizes="%s" alt="%s" >',
   esc_url( $img_src ), esc_attr( $img_srcset ), esc_attr($img_sizes), $img_alt
);

Listo, ya tendrás una etiqueta de imagen responsiva donde dependiendo de la resolución del dispositivo, se cambiará la imagen por una de mayor o menor de resolución (dependiendo del dispositivo). Cabe destacar que esta funcionalidad funciona con todo navegador moderno exceptuando…por supuesto…Internet Explorer.

Deja un comentario