Skip to Content

get_thumbnail_src()

Get only the URL for the specific thumbnail sizes of an ID, or from the attachment ID directly.

PHP February 15, 2019

Usage

PHP
nebula()->get_thumbnail_src($id, $size, $type)

Parameters

$id
(Required) (Integer) The post ID
Default: None

$size
(Optional) (String) The size name to get
Default: full

$type
(Optional) (String) Whether the ID is a post or attachment
Default: post

Request or provide clarification »

Examples

PHP
<?php echo nebula()->get_thumbnail_src(get_the_post_thumbnail($post->ID, 'twitter_large')); ?>
PHP
<?php echo nebula()->get_thumbnail_src($post->ID, 'twitter_large'); ?>

Using as an inline background image

HTML
<div style="background: url(<?php echo nebula()->get_thumbnail_src(get_the_id()); ?>) no-repeat bottom right;"></div>

Get a specific size of an attachment image (like from an ACF image field)

PHP
<?php echo nebula()->get_thumbnail_src(get_field('thumbnail_image'), 'twitter_large', 'attachment'); ?>

Source File

Located in /libs/Functions.php on line 358.

1 Hook

Find these filters and actions in the source code below to hook into them. Use do_action() and add_filter() in your functions file or plugin.

Filters
"nebula_thumbnail_src_size"
Need a new filter hook? Request one here.

Actions
This function has no action hooks available. Request one?

PHP
    public function get_thumbnail_src($img=null, $size='full', $type='post'){
        if ( empty($img) ){
            return false;
        }

        //If HTML is passed, immediately parse it with HTML
        if ( strpos($img, '<img') !== false ){
            return ( preg_match('~\bsrc="([^"]++)"~', $img, $matches) )? $matches[1] : ''; //Pull the img src from the HTML tag itself
        }

        $id = intval($img); //Can now use the ID

        //If and ID was not passed, immediately return it (in case it is already an image URL)
        if ( $id === 0 || ($id === 1 && $img != 1) ){
            return $img;
        }

        $size = apply_filters('nebula_thumbnail_src_size', $size, $id);

        //If an attachment ID (or thumbnail ID) was passed
        if ( get_post_type($id) === 'attachment' || $type !== 'post' ){
            $image = wp_get_attachment_image_src(get_post_thumbnail_id($id), $size);

            if ( !empty($image[0]) ){
                return $image[0];
            }
        }

        //Otherwise get the HTML from the post ID (or if the attachment src did not work above)
        $img_tag = get_the_post_thumbnail($id, $size);
        if ( get_post_type($id) === 'attachment' ){
            $img_tag = wp_get_attachment_image($id, $size);
        }

        return ( preg_match('~\bsrc="([^"]++)"~', $img_tag, $matches) )? $matches[1] : ''; //Pull the img src from the HTML tag itself
    }

Override

This function can not be short-circuited with an override filter. Request one?