Como obtenho o URL da imagem apenas em the_post_thumbnail

33

Quero saber como obter o URL da imagem the_post_thumbnail()

Padrão 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" />

Aqui eu quero pegar apenas o src. Como filtrar the_post_thumbnail()apenas para obterhttp://domain.com/wp-content/uploads/2011/02/book06.jpg

Avise-se me

haha
fonte
possível duplicata de Obtendo Path Thumbnail em vez de tag de imagem
Jan Fabry

Respostas:

41

Você também pode tentar:

Se você tiver apenas uma miniatura de tamanho:

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

Ou ... se você tiver vários tamanhos:

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

Observe que wp_get_attachment_image_src () retorna uma matriz: url, largura, altura, is_intermediate.

Então, se você quiser apenas o URL da imagem:

echo $thumbnail[0];

Recursos:

Ross
fonte
Uma pequena dica: se você estiver usando a função wp_get_attachment_image_src () com tamanho e quiser obter o tamanho exato da miniatura: use o nome da miniatura fornecido na definição (função add_image_size ()). Se você usar uma matriz com dimensões, o WP utilizará o tamanho da primeira imagem com largura ou altura adequadas. Então você pode ter uma imagem errada. Exemplo: em vez de 156 x 98, você pode ter 120 x 98 se tiver 2 imagens definidas: 156 x 98 e 120 x 98 (a altura é a mesma). Eu me apaixonei por ele uma vez;)
Marek Tuchalski
2

Isso faz o truque:

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

Certifique-se de usar o nome correto para a miniatura que você está chamando.

Anna
fonte
Não sei se isso mudou desde 2012, mas em 2017 o primeiro parâmetro de wp_get_attachment_image_srcdeve ser o número de identificação do anexo, não o tamanho.
Squarecandy
2

Desde o WordPress 4.4, há uma função principal eficiente que pode lidar com isso de uma maneira mais limpa do que as respostas aqui.

Você pode usar o the_post_thumbnail_url( $size )que imprimirá o URL da miniatura da postagem.

Como alternativa, se você quiser retornar o URL em vez de enviá-lo imediatamente, poderá usar $url = get_the_post_thumbnail_url( $size )

cameronjonesweb
fonte
0

Ok entendi usando simplexml_load_string

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

Outro método é bem-vindo.

haha
fonte
0

Use o código abaixo

<?php get_the_post_thumbnail_url(); ?>

Se não for suficiente para atingir seu objetivo, tente o código abaixo

<?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
fonte
0

Para uma solução rápida e suja, coloque-a no arquivo functions.php do seu tema

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

Utilizado dentro do loop, isso fornecerá o que você está procurando

Isso retornará algo como 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="');

* "Dentro do loop" = procure algo como while (have_posts ()): the_post ();

** Você também pode sublinhar " pós-grande " com qualquer um destes tamanhos de imagem predefinidos: pós-miniatura, pós-médio, pós-completo

Taylor Hunt
fonte