DISCLAIMER: this post is older than one year and may not be up to date with latest WordPress version.

Since version 2.9, WordPress let you define a post thumbnail so you can embellish your post with an image. But there’s no way to define a default thumbnail to be used when no custom thumbnail is defined. Here is a cool recipe to define a default post thumbnail.

Paste the code below into your functions.php file. Don’t forget to update the code with your default image url on line 13.

add_action( 'save_post', 'wptuts_save_thumbnail' );

function wptuts_save_thumbnail( $post_id ) {

	// Get Thumbnail
	$post_thumbnail = get_post_meta( $post_id, $key = '_thumbnail_id', $single = true );

	// Verify that post is not a revision
	if ( !wp_is_post_revision( $post_id ) ) {
		// Check if Thumbnail exists
		if ( empty( $post_thumbnail ) ) {
			// Add thumbnail to post
			update_post_meta( $post_id, $meta_key = '_thumbnail_id', $meta_value = 'http://yoursite.com/your_image_url.jpg' );


Thanks to WPTuts for the snippet!



  1. Great, thanks 😀

  2. Will this save the default thumbnail to the database for posts with no thumbnail?

  3. For the image URL, could this be a relative URL, e.g. ‘/images/your_image_url.jpg’ ? Or, does it have to be an absolute URL?

  4. As I understand the _thumbnail_id post meta is supposed to save an integer ID (attachment id), so for update_post_meta shouldn’t we save the attachment id instead of the image url?

  5. Thanks. I’ve just tweaked it a bit like Sola said.
    I’ve defined a constant in my config with the ID of a special image that I’ve uploaded (non attached to a post), and I update the meta with that const in the function.

Leave a Comment

Your email address will not be published. Required fields are marked *