Cum obțin doar URL-ul imaginii din the_post_thumbnail()?

12 feb. 2011, 09:17:56
Vizualizări: 82.6K
Voturi: 34

Vreau să știu cum să obțin doar URL-ul imaginii din the_post_thumbnail(). Rezultatul implicit al the_post_thumbnail() este:

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

În acest caz, vreau să extrag doar valoarea atributului src. Cum pot filtra the_post_thumbnail() pentru a obține doar http://example.com/wp-content/uploads/2011/02/book06.jpg?

1
Comentarii

posibil duplicat al Obținerea căii Thumbnail în loc de Tag-ul Imagine

Jan Fabry Jan Fabry
12 feb. 2011 17:55:29
Toate răspunsurile la întrebare 6
1
42

De asemenea, poți încerca:

Dacă ai doar o singură dimensiune pentru thumbnail:

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

Sau... dacă ai mai multe dimensiuni:

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

Reține că wp_get_attachment_image_src() returnează un array: url, lățime, înălțime, is_intermediate.

Deci dacă vrei doar URL-ul imaginii:

echo $thumbnail[0];

Resurse:

12 feb. 2011 22:17:08
Comentarii

Un mic indiciu: dacă utilizați funcția wp_get_attachment_image_src() cu dimensiunea și doriți să obțineți dimensiunea exactă a miniaturii: folosiți numele miniaturii definit în add_image_size(). Dacă utilizați un array cu dimensiuni, WordPress va folosi prima dimensiune de imagine care are lățimea sau înălțimea corespunzătoare. Astfel, s-ar putea să obțineți imaginea greșită. Exemplu: în loc de 156x98, ați putea obține 120x98 dacă aveți definite 2 dimensiuni: 156x98 și 120x98 (înălțimea este aceeași). Am pățit-o odată ;)

Marek Tuchalski Marek Tuchalski
16 oct. 2011 18:15:32
0

Începând cu WordPress 4.4, există o funcție de bază eficientă care poate gestiona acest lucru într-un mod mai curat decât răspunsurile prezentate aici.

Puteți folosi the_post_thumbnail_url( $size ) care va afișa URL-ul imaginii miniatură a articolului.

Alternativ, dacă doriți să returnați URL-ul în loc să-l afișați imediat, puteți folosi $url = get_the_post_thumbnail_url( $post_id, $size )

15 sept. 2017 08:14:22
1

Acest lucru funcționează:

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

Asigură-te că folosești numele corect pentru miniatura pe care o apelezi.

21 dec. 2012 04:02:04
Comentarii

Nu știu dacă acest lucru s-a schimbat din 2012, dar în 2017 primul parametru al funcției wp_get_attachment_image_src trebuie să fie ID-ul atașamentului (un număr), nu dimensiunea imaginii.

squarecandy squarecandy
12 mai 2017 01:07:31
0

Am înțeles, folosind simplexml_load_string

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

Alte metode sunt binevenite.

12 feb. 2011 10:37:15
0

Vă rugăm să utilizați următorul cod

<?php get_the_post_thumbnail_url(); ?>

Dacă acest cod nu este suficient pentru a vă atinge obiectivul, încercați următorul cod

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

// Verifică dacă există imagini if ( $postimages ) {

    // Obține imaginea reprezentativă   $postimage = $postimages[0];

} else {} while (have_posts() && $i < 8) : the_post(); echo esc_url( $postimage ); ?>
26 oct. 2018 08:31:34
1
-1

Pentru o soluție rapidă & simplă, adaugă asta în fișierul functions.php al temei tale

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);
}

Folosit în interiorul loop-ului, acest cod va returna ceea ce cauți

Acesta va returna ceva de genul http://example.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="');

"În interiorul loop-ului" înseamnă să cauți ceva similar cu while ( have_posts() ): the_post();.

Poți înlocui post-large cu oricare dintre aceste dimensiuni predefinite ale imaginilor:

  • post-thumbnail
  • post-medium
  • post-full
17 feb. 2019 02:03:29
Comentarii

asta e rău. de ce folosești litere mari pentru codurile tale?

Raptor Raptor
3 iun. 2020 05:17:23