Jak uzyskać adres URL obrazu tylko na post_thumbnail


33

Chcę wiedzieć, jak uzyskać adres URL obrazu the_post_thumbnail()

Domyślna the_post_thumbnail()

<img width="800" height="533" src="http://domain.com/wp-content/uploads/2011/02/book06.jpg" class="attachment-post-thumbnail wp-post-image" alt="book06" title="book06" />

Tutaj chcę tylko złapać src. Jak mogę filtrować the_post_thumbnail()tylko po to, aby uzyskaćhttp://domain.com/wp-content/uploads/2011/02/book06.jpg

Daj mi znać


Odpowiedzi:


41

Możesz także spróbować:

Jeśli masz tylko jedną miniaturę:

$thumbnail = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ) );

Lub ... jeśli masz wiele rozmiarów:

$thumbnail = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), "size" );

Zauważ, że wp_get_attachment_image_src () zwraca tablicę: url, width, height, is_intermediate.

Więc jeśli chcesz tylko adres URL obrazu:

echo $thumbnail[0];

Zasoby:


Mała wskazówka: jeśli używasz funkcji wp_get_attachment_image_src () z rozmiarem i chcesz uzyskać dokładny rozmiar miniatury: użyj nazwy miniatury podanej w definicji (funkcja add_image_size ()). Jeśli użyjesz tablicy o wymiarach, WP użyje pierwszego rozmiaru obrazu, który ma odpowiednią szerokość lub wysokość. Możesz więc pomylić obraz. Przykład: zamiast 156 x 98 możesz mieć 120 x 98, jeśli masz zdefiniowane 2 obrazy: 156 x 98 i 120 x 98 (wysokość jest taka sama). Raz się w to zakochałem;)
Marek Tuchalski

2

To załatwia sprawę:

<?php wp_get_attachment_image_src('subgall-thumb'); ?>

Upewnij się, że używasz poprawnej nazwy miniatury, do której dzwonisz.


Nie wiem, czy to się zmieniło od 2012 r., Ale w 2017 r. Pierwszym parametrem wp_get_attachment_image_srcmusi być numer identyfikacyjny załącznika, a nie rozmiar.
squarecandy


0

Ok, mam to za pomocą simplexml_load_string

$dom = simplexml_load_string(get_the_post_thumbnail());
$src = $dom->attributes()->src;
    echo $src;

Inna metoda jest mile widziana.


0

Proszę użyć poniższego kodu

<?php get_the_post_thumbnail_url(); ?>

Jeśli osiągnięcie celu nie wystarczy, wypróbuj poniższy kod

<?php $postimages = wp_get_attachment_image_src( get_post_thumbnail_id( get_the_ID() ), 'large' );

// Check for images if ( $postimages ) {

    // Get featured image   $postimage = $postimages[0];

} else {} while (have_posts() && $i < 8) : the_post(); echo esc_url( $postimage ); ?>

0

Aby uzyskać szybkie i brudne rozwiązanie, uderz to w plik funkcji.php swojego motywu

FUNCTION GET_STRING_BETWEEN($STRING, $START, $END){
    $STRING = " ".$STRING;
    $INI = STRPOS($STRING, $START);
    IF ($INI == 0) RETURN "";
    $INI += STRLEN($START);
    $LEN = STRPOS($STRING, $END, $INI) - $INI;
    RETURN SUBSTR($STRING, $INI, $LEN);
}

Używany w pętli daje ci to, czego szukasz

Zwróci to coś takiego jak http://foo.com/wp-content/uploads/2019/02/toy-story-two-was-ok.jpg

$THE_FEATURED_IMAGE = GET_STRING_BETWEEN(get_the_post_thumbnail(NULL,'post-large'), 'src="', '" class="');

* „W pętli” = poszukaj czegoś podobnego while (have_posts ()): the_post ();

** Możesz również subskrybować „ post-large ” za pomocą dowolnego z tych predefiniowanych rozmiarów obrazu: post-thumbnail, post-medium, post-full

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.