Получение пути к миниатюре вместо HTML-тега изображения в WordPress
Я вижу много методов отображения миниатюр в WordPress, но не могу сразу понять, как получить только путь к миниатюре записи, а не HTML-код, генерируемый такими функциями, как the_post_thumbnail()
и get_the_post_thumbnail()
.
Какие методы доступны для получения только пути к миниатюре (чтобы установить его как фоновое изображение), а не тега <img />
? Есть ли у меня только вариант разбора результатов метода get_
или существует более простой способ?

Миниатюра по сути является вложением, поэтому к ней можно обратиться таким образом - найти ID с помощью get_post_thumbnail_id()
и получить данные с помощью wp_get_attachment_image_src()
, например:
if (has_post_thumbnail()) {
$thumb = wp_get_attachment_image_src(get_post_thumbnail_id(), 'thumbnail_name');
echo $thumb[0]; // URL миниатюры
}
(источник)

Когда мне нужно отобразить миниатюру, прикрепленную к галерее записи, я использую пользовательскую функцию в своем файле functions.php. Возможно, это избыточно для ваших нужд, но она охватывает все необходимое.
В этом примере я извлекаю все изображения из галереи записи и отображаю каждое изображение в элементе списка. Список содержит миниатюру изображения, обернутую в якорную ссылку, ведущую на запись, из которой взято изображение. Выходная строка может быть легко адаптирована под ваши потребности.
function get_gallery_image_thumb_list($size){
global $post;
$args = array(
'numberposts' => null,
'post_parent' => $post->ID,
'post_type' => 'attachment',
'nopaging' => false,
'post_mime_type' => 'image',
'order' => 'ASC',
'orderby' => 'menu_order ID',
'post_status' => 'any'
);
$attachments =& get_children($args);
if ($attachments) {
foreach($attachments as $attachment) {
foreach($attachment as $attachment_key => $attachment_value) {
$imageID = $attachment->ID;
$imageTitle = $attachment->post_title;
$imageCaption = $attachment->post_excerpt;
$imageDescription = $attachment->post_content;
$imageAlt = get_post_meta($imageID, '_wp_attachment_image_alt', true);
$imageArray = wp_get_attachment_image_src($attachment_value, $size, false);
$imageURI = $imageArray[0]; // 0 - это URI
$imageWidth = $imageArray[1]; // 1 - ширина
$imageHeight = $imageArray[2]; // 2 - высота
// Собираем строку <img>
$ImgString = '<li><a href="' . get_permalink() . '" title="' . the_title("", "", false) . '"><img src="' . $imageURI . '" width="' . $imageWidth . '" height="' . $imageHeight . '" alt="' . $imageAlt . '" title="' . $imageTitle . '" /></a></li>';
// Выводим изображение
echo $ImgString;
break;
}
}
}
unset($args);}
Затем вызовите функцию и передайте размер изображения, которое хотите получить (thumbnail, medium, large или full), следующим образом:
get_gallery_image_thumb_list("thumbnail");
Этот вызов должен быть выполнен внутри The Loop или пользовательского цикла.
