Получение пути к миниатюре вместо тега изображения
-
16-10-2019 - |
Вопрос
Я вижу много способов отображения миниатюр в WordPress, но я не сразу понимаю, как я могу получить только путь к миниатюре сообщения, а не готовый html-код, сгенерированный такими функциями, как the_post_thumbnail()
и get_the_post_thumbnail()
.
Какие способы мне доступны, чтобы получить только путь к миниатюре (чтобы установить его как bgimage), а не путь <img />
ярлык?Есть ли у меня только возможность анализа результатов get_
метод или есть более простой способ?
Решение
Миниатюра - это по сути привязанность, поэтому вы можете подходить с этой стороны - идентификатор поиска с 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]; // thumbnail url
}
(источник)
Другие советы
Одним из методов будет преобразование того, что возвращается из get_the_post_thumbnail()
на объект и потянуть src
атрибут:
$thumbnail = new SimpleXMLElement( get_the_post_thumbnail( $postid ) );
print $thumbnail->attributes()->src;
Когда мне нужно отобразить миниатюру, прикрепленную к галерее сообщений, я использую специальную функцию в моем файле function.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 is the URI
$imageWidth = $imageArray[1]; // 1 is the width
$imageHeight = $imageArray[2]; // 2 is the height
// Build the <img> string
$ImgString = '<li><a href="' . get_permalink() . '" title="' . the_title("", "", false) . '"><img src="' . $imageURI . '" width="' . $imageWidth . '" height="' . $imageHeight . '" alt="' . $imageAlt . '" title="' . $imageTitle . '" /></a></li>';
// Print the image
echo $ImgString;
break;
}
}
}
unset($args);}
Затем вызовите функцию и передайте размер изображения, которое вы хотите вернуть (миниатюру, средний, большой или полный), например:
get_gallery_image_thumb_list("thumbnail");
Это нужно будет вызвать в The Loop или пользовательском цикле.
get_the_post_thumbnail_url($recent['ID']);
Вышеупомянутое уловало для меня! Я должен был угадать функцию, и она волшебным образом сработала!
Хорошо упомянуть, что я использовал get_recent_posts
петля в процессе.