bloginfo('template_directory') nell'attributo src dell'immagine
Sto utilizzando il lazy loading per alcune immagini con URL aggiunti tramite campi personalizzati.
Il plugin di lazy loading che sto utilizzando richiede un'immagine segnaposto nell'attributo src e l'immagine effettiva in data-original.
http://www.appelsiini.net/projects/lazyload
Ho bisogno anche dell'altezza e della larghezza dell'immagine, quindi ho utilizzato wp_get_attachment_image_src().
Il mio problema è l'utilizzo di bloginfo('template_directory') per ottenere l'immagine segnaposto.
La prima immagine qui non mostra le immagini segnaposto ma visualizza l'url nella pagina.
<?php
// Ottiene l'ID dell'allegato dalla prima immagine
$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');
// Ottiene l'ID dell'allegato dalla seconda immagine
$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');
// Ottiene l'ID dell'allegato dalla terza immagine
$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].'">';
?>
Il sorgente della pagina appare così:
http://localhost/wordpress-cd/wp-content/themes/cd<img src="/images/img-BG.png"
Perché non posso usare bloginfo('template_directory') qui?
Come posso visualizzare correttamente le immagini?
Non puoi utilizzare bloginfo() mentre stai effettuando l'output con echo perché bloginfo stesso emette la stringa utilizzando echo. Di seguito troverai la soluzione funzionante, ho anche rimosso i doppi apici in eccesso...
<?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].'">';
?>
Si prega di notare che get_template_directory_uri() è preferibile rispetto a get_bloginfo('template_directory').
Per maggiori informazioni, fare riferimento a questo link: get_template_directory() vs bloginfo( 'template_directory' ) vs TEMPLATEPATH