Comment puis-je obtenir l'URL de l'image uniquement sur the_post_thumbnail

33

Je veux savoir comment obtenir l'URL de l'image sur the_post_thumbnail()

Défaut 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" />

Ici, je veux prendre le SRC seulement. Comment puis-je filtrer the_post_thumbnail()uniquement pour obtenirhttp://domain.com/wp-content/uploads/2011/02/book06.jpg

Faites le moi savoir

haha
la source

Réponses:

41

Vous pourriez aussi essayer:

Si vous n'avez qu'une vignette de taille:

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

Ou ... si vous avez plusieurs tailles:

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

Notez que wp_get_attachment_image_src () retourne un tableau: url, width, height, is_intermediate.

Donc, si vous ne voulez que l’URL de l’image:

echo $thumbnail[0];

Ressources:

Ross
la source
Un petit indice: si vous utilisez la fonction wp_get_attachment_image_src () avec une taille et souhaitez obtenir la taille exacte de la vignette: utilisez le nom de la vignette donnée dans la définition (fonction add_image_size ()). Si vous utilisez un tableau avec des dimensions, WP utilisera la première taille d'image avec une largeur ou une hauteur appropriée. Donc, vous risquez de vous tromper d'image. Exemple: au lieu de 156x98, vous pourriez avoir 120x98 si vous avez défini 2 images: 156x98 & 120x98 (la hauteur est la même). Je suis tombé pour ça une fois;)
Marek Tuchalski
2

Cela fait le tour:

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

Assurez-vous que vous utilisez le nom correct pour la vignette que vous appelez.

Anna
la source
Je ne sais pas si cela a changé depuis 2012, mais en 2017, le premier paramètre de wp_get_attachment_image_srcdoit être le numéro d'identification de la pièce jointe, pas la taille.
squarecandy
2

Depuis WordPress 4.4, il existe une fonction de base efficace qui peut gérer cela de manière plus nette que les réponses fournies ici.

Vous pouvez utiliser the_post_thumbnail_url( $size )ce qui imprimera l'URL de la vignette du message.

Alternativement, si vous souhaitez renvoyer l’URL au lieu de l’afficher immédiatement, vous pouvez utiliser $url = get_the_post_thumbnail_url( $size )

cameronjonesweb
la source
0

Ok je l'ai utilisé simplexml_load_string

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

Une autre méthode est la bienvenue.

haha
la source
0

Veuillez utiliser le code ci-dessous

<?php get_the_post_thumbnail_url(); ?>

S'il ne suffit pas d'atteindre votre objectif, essayez ci-dessous le code

<?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 ); ?>
Jit Gurav
la source
0

Pour une solution rapide et sale, claquez ceci dans le fichier functions.php de votre thème.

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

Utilisé dans la boucle, cela vous donnera ce que vous cherchez

Cela retournera quelque chose comme 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="');

* "Within the loop" = chercher quelque chose comme while (have_posts ()): the_post ();

** Vous pouvez également sous -poster " post-large " avec n'importe laquelle de ces tailles d'image prédéfinies: post-vignette, post-support, post-plein

Taylor Hunt
la source