bloginfo('template_directory') и атрибут src для изображений
Я использую ленивую загрузку изображений с URL-адресами, которые добавляются через произвольные поля.
Плагин ленивой загрузки, который я использую, требует изображение-заглушку в атрибуте src и фактическое изображение в data-original.
http://www.appelsiini.net/projects/lazyload
Мне также нужны высота и ширина изображения, поэтому я использую wp_get_attachment_image_src().
Моя проблема заключается в использовании bloginfo('template_directory') для получения изображения-заглушки.
Первое изображение здесь не показывает изображения-заглушки, но выводит URL на страницу.
<?php
// Получаем ID вложения из URL для первого изображения
$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');
// Получаем ID вложения из URL для второго изображения
$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');
// Получаем ID вложения из URL для третьего изображения
$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].'">';
?>
Исходный код страницы выглядит так:
http://localhost/wordpress-cd/wp-content/themes/cd<img src="/images/img-BG.png"
Почему я не могу использовать bloginfo('template_directory') здесь?
Как правильно выводить изображения?
Вы не можете использовать bloginfo() при выводе с помощью echo, потому что сама функция bloginfo также выводит строку с использованием echo. Ниже приведен рабочий вариант, также я убрал лишние двойные кавычки...
<?php
// Получаем ID вложений из URL картинок
$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].'">';
?>
Обратите внимание, что использование get_template_directory_uri() предпочтительнее, чем get_bloginfo('template_directory').
Для получения дополнительной информации обратитесь к этой статье: get_template_directory() vs bloginfo( 'template_directory' ) vs TEMPLATEPATH