Получение пути к миниатюре вместо тега изображения

wordpress.stackexchange https://wordpress.stackexchange.com/questions/4745

  •  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 петля в процессе.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с wordpress.stackexchange
scroll top