bloginfo('template_directory') pentru sursa imaginii
Încarc leneș (lazy loading) niște imagini cu URL-uri care sunt adăugate prin câmpuri personalizate.
Plugin-ul de lazy load pe care îl folosesc necesită o imagine placeholder în atributul src și imaginea efectivă în data-original.
http://www.appelsiini.net/projects/lazyload
Am nevoie și de înălțimea și lățimea imaginii, așa că am folosit wp_get_attachment_image_src().
Problema mea este folosirea bloginfo('template_directory') pentru a obține imaginea placeholder.
Prima imagine nu afișează imaginile placeholder dar afișează url-ul în pagină.
<?php
// Obține ID-ul atașamentului pentru prima imagine
$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');
// Obține ID-ul atașamentului pentru a doua imagine
$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');
// Obține ID-ul atașamentului pentru a treia imagine
$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].'">';
?>
Sursa pentru pagină arată astfel:
http://localhost/wordpress-cd/wp-content/themes/cd<img src="/images/img-BG.png"
De ce nu pot folosi bloginfo('template_directory') aici?
Cum pot afișa corect imaginile?
Nu poți folosi bloginfo() în timp ce afișezi folosind echo deoarece funcția bloginfo în sine folosește echo pentru a afișa șirul de caractere. Mai jos este soluția care va funcționa pentru tine, am eliminat și ghilimelele duble în plus...
<?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].'">';
?>
Vă rugăm să rețineți că funcția get_template_directory_uri() este preferată în loc de get_bloginfo('template_directory').
Pentru mai multe informații, consultați acest link: get_template_directory() vs bloginfo( 'template_directory' ) vs TEMPLATEPATH