Cómo usar bloginfo('template_directory') para src de imágenes
Estoy cargando imágenes de forma diferida (lazy loading) con URLs que se agregan a través de campos personalizados.
El plugin de lazy load que estoy usando requiere una imagen provisional en el atributo src y la imagen real en data-original.
http://www.appelsiini.net/projects/lazyload
Necesito también la altura y el ancho de la imagen, por lo que he estado usando wp_get_attachment_image_src().
Mi problema es usar bloginfo('template_directory') para obtener la imagen provisional.
La primera imagen aquí no muestra las imágenes provisionales pero sí muestra la url en la página.
<?php
// Obtener ID del adjunto y atributos de la imagen 1
$attch_id_1 = pn_get_attachment_id_from_url(get_post_meta($post->ID, 'img1', true));
$image_attributes_1 = wp_get_attachment_image_src( $attch_id_1, 'full');
// Obtener ID del adjunto y atributos de la imagen 2
$attch_id_2 = pn_get_attachment_id_from_url(get_post_meta($post->ID, 'img2', true));
$image_attributes_2 = wp_get_attachment_image_src( $attch_id_2, 'full');
// Obtener ID del adjunto y atributos de la imagen 3
$attch_id_3 = pn_get_attachment_id_from_url(get_post_meta($post->ID, 'img3', true));
$image_attributes_3 = wp_get_attachment_image_src( $attch_id_3, 'full');
echo '<img src="'.bloginfo('template_directory').'"/images/img-BG.png" data-original="'.$image_attributes_1[0].'">';
echo '<img src="http://localhost/wordpress-cd/wp-content/themes/cd/images/img-BG.png" data-original="'.$image_attributes_2[0].'">';
echo '<img src="http://localhost/wordpress-cd/wp-content/themes/cd/images/img-BG.png" data-original="'.$image_attributes_3[0].'">';
?>
El código fuente de la página se ve así.
http://localhost/wordpress-cd/wp-content/themes/cd<img src="/images/img-BG.png"
¿Por qué no puedo usar bloginfo('template_directory') aquí?
¿Cómo puedo mostrar las imágenes correctamente?
No puedes usar bloginfo() mientras estás generando salida con echo porque bloginfo en sí mismo también genera cadenas usando echo. Lo siguiente funcionará para ti, también tenías comillas dobles adicionales que he eliminado...
<?php
$attch_id_1 = pn_get_attachment_id_from_url(get_post_meta($post->ID, 'img1', true));
$image_attributes_1 = wp_get_attachment_image_src( $attch_id_1, 'full');
$attch_id_2 = pn_get_attachment_id_from_url(get_post_meta($post->ID, 'img2', true));
$image_attributes_2 = wp_get_attachment_image_src( $attch_id_2, 'full');
$attch_id_3 = pn_get_attachment_id_from_url(get_post_meta($post->ID, 'img3', true));
$image_attributes_3 = wp_get_attachment_image_src( $attch_id_3, 'full');
echo '<img src="'.get_bloginfo('template_directory').'/images/img-BG.png" data-original="'.$image_attributes_1[0].'">';
echo '<img src="http://localhost/wordpress-cd/wp-content/themes/cd/images/img-BG.png" data-original="'.$image_attributes_2[0].'">';
echo '<img src="http://localhost/wordpress-cd/wp-content/themes/cd/images/img-BG.png" data-original="'.$image_attributes_3[0].'">';
?>
Por favor, ten en cuenta que se prefiere usar get_template_directory_uri() en lugar de get_bloginfo('template_directory').
Para más información, consulta esto: get_template_directory() vs bloginfo( 'template_directory' ) vs TEMPLATEPATH