How can I remove the width and height attributes from the post_thumbnail when inserting with <?php the_post_thumbnail(); ?>?

<img width="800" height="533" src="http://domain.com/wp-content/uploads/2011/02/image.jpg" class="attachment-post-thumbnail wp-post-image" />
  • look for thumbnail.php file, not sure but usually that files contain the hard coding Jul 7 '11 at 14:54
  • In case you were wondering, I want to be able to modify widths and height with CSS - more specifically set a max-width and let the height set itself rather than default to the hard coded one.
    – Carson
    Jul 7 '11 at 14:54
  • use firebug to get the exact class or ID, or give me your URL Jul 7 '11 at 14:56
  • 2
    Changing anything in a file outside the theme (for example post-thumbnail-template.php) would be a bad idea as any WordPress update would overwrite it.
    – Carson
    Jul 7 '11 at 15:10
  • What makes you think you need to remove the attributes to do what you want?
    – t31os
    Jul 7 '11 at 17:27

Related: Filter to remove image dimension attributes?

There's a filter on post_thumbnail_html which receives as its argument the full html element representing the post thumbnail image before it's echoed to the page. You can filter out the dimensions with a bit of regex:

add_filter( 'post_thumbnail_html', 'remove_thumbnail_dimensions', 10, 3 );

function remove_thumbnail_dimensions( $html, $post_id, $post_image_id ) {
    $html = preg_replace( '/(width|height)=\"\d*\"\s/', "", $html );
    return $html;
  • It does not work for me. add_filter( 'post_thumbnail_html', 'remove_thumbnail_dimensions', 10, 3 ); function remove_thumbnail_dimensions( $html, $post_id, $post_image_id ) { if ( wp_is_mobile() ) { $html = preg_replace( '/(width|height)=\"\d*\"\s/', "", $html ); } return $html; } Sep 11 '14 at 10:20
  • This will remove width/height from all instances of where the_post_thumbnail() is used. Jan 24 '20 at 0:03

you could just grab the url of the thumb and put it in an img tag yourself:

$thumbnail = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), 'your_thumb_handle' );
<img src="<?php echo $thumbnail['0']; ?>" />
  • 1
    That's the only solution I've come across too, was just hoping there was a way to do it without a workaround.
    – Carson
    Jul 7 '11 at 15:09
  • But you also need to query for the alt and title attributes
    – MZAweb
    Apr 6 '12 at 17:41
add_filter( 'post_thumbnail_html', 'remove_thumbnail_dimensions', 10 );
add_filter( 'image_send_to_editor', 'remove_thumbnail_dimensions', 10 );
add_filter( 'the_content', 'remove_thumbnail_dimensions', 10 );
function remove_thumbnail_dimensions( $html ) {
    $html = preg_replace( '/(width|height)=\"\d*\"\s/', "", $html );
    return $html;

this will do the job, "the_contnet" will remove all post content text image width and height.

  • Please edit your answer, and add an explanation: why could that solve the problem?
    – fuxia
    Aug 23 '18 at 14:53

I prefer this solution below as I'm not doing a global replace with a function. This would be incorporated into your theme files.

<?php echo preg_replace( '/(width|height)="\d*"/', '', get_the_post_thumbnail( get_the_ID(), 'large' ) ); ?>

You can replace "large" with "thumbnail", "medium", "full", or your custom image size declared in your theme.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.