get_the_post_thumbnail() doesn’t taking style attribute

This seems to be an easy one but its giving me quite a hard time. get_the_post_thumbnail() suppose to take attribute as an array. Well, everything working right but when i pass style attr its doesn’t work.

$attr = array(
                                'title' => get_the_title(),
                                'alt' => get_the_title(),
                                'style' => 'float:left'
                            );

$thumb = get_the_post_thumbnail($post->ID, 'large-thumb', $attr);

The title and the alt attribute is set up nicely though but style attribute is missing in images.

Read More

FYI: I am showing the thumbnail in rss feed.

Related posts

Leave a Reply

2 comments

  1. get_the_post_thumbnail attribute array doesn’t know STYLE , the fields that are available for you to use are:

    • src
    • class
    • alt
    • title

    so just use the class and define you class to it:

    $attr = array(
                                    'title' => get_the_title(),
                                    'alt' => get_the_title(),
                                    'class' => 'rss_thumb'
                                );
    $thumb = get_the_post_thumbnail($post->ID, 'large-thumb', $attr);
    

    and then define the style in the class:

    <style>
    .rss_thumb{float:left}
    </style>
    

    Update:

    My bad rss feed can really be styled like HTML since its not HTML. so to over come this problem you need to have your image inside the content tag and give it an align=”left” which should work in most rss readers.

    so what you really want is to add a content_filter:

    add_filter('the_content','add_rss_thumb');
    
    function add_rss_thumb($content){
        if (!is_feed()){
            return $content;
        }
    
        //now that we know is a feed we add the image to the content:
        global $post;
        if(has_post_thumbnail()) {
            $post_thumbnail_id = get_post_thumbnail_id( $post->ID );
            $thumbnail_attributes = wp_get_attachment_image_src( $post_thumbnail_id );
            /*
                $thumbnail_attributes is an array containing: 
                [0] => url
                [1] => width
                [2] => height 
            */
    
            return '<img src="'.thumbnail_attributes[0].'" title="'.the_title_attribute('','',0).'" alt="'.the_title_attribute('','',0).'" align="left">'.$content;
        }
        return $content;
    }
    
  2. I stumbled on a good and more global solution for this on Isabel Castillo’s blog, by using wp_get_attachment_image_attributes filter:

    function isa_add_img_title( $attr, $attachment = null ) {
        $attr['title'] = trim( strip_tags( $attachment->post_title ) );
        return $attr;
    }
    add_filter( 'wp_get_attachment_image_attributes','isa_add_img_title', 10, 2 );
    

    This way, you could add other attributes as well (e.g. data-caption)

    Original code on http://isabelcastillo.com/add-title-attribute-wordpress-image-thumbnail