How do I get only the image URL from the_post_thumbnail()?

I want to know how to get just the image URL from the_post_thumbnail(). The default output of the_post_thumbnail() is:

<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" />

Here I want grab the src only. How do I filter the_post_thumbnail() to get only http://example.com/wp-content/uploads/2011/02/book06.jpg?

Related posts

Leave a Reply

6 comments

  1. You might also try:

    If you only have one size thumbnail:

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

    Or…if you have multiple sizes:

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

    Note that wp_get_attachment_image_src() returns an array: url, width, height, is_intermediate.

    So if you just want only the image url:

    echo $thumbnail[0];
    

    Resources:

  2. Please Use the below code

    <?php get_the_post_thumbnail_url(); ?>
    

    If It’s not enough to achieve your goal then try below 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 ); ?>
    
  3. For a quick & dirty solution, slap this in the functions.php file of your theme

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

    Used within the loop, this will give you what you’re looking for

    This will return something like 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="');
    

    “Within the loop” means look for something like while ( have_posts() ): the_post();.

    You can also sub out post-large with any of these predefined image sizes:

    • post-thumbnail
    • post-medium
    • post-full