set_post_thumbnail( int|WP_Post $post, int $thumbnail_id )

Sets the post thumbnail (featured image) for the given post.


Description Description


Parameters Parameters

$post

(int|WP_Post) (Required) Post ID or post object where thumbnail should be attached.

$thumbnail_id

(int) (Required) Thumbnail to attach.


Top ↑

Return Return

(int|bool) True on success, false on failure.


Top ↑

Source Source

File: wp-includes/post.php

function set_post_thumbnail( $post, $thumbnail_id ) {
	$post         = get_post( $post );
	$thumbnail_id = absint( $thumbnail_id );
	if ( $post && $thumbnail_id && get_post( $thumbnail_id ) ) {
		if ( wp_get_attachment_image( $thumbnail_id, 'thumbnail' ) ) {
			return update_post_meta( $post->ID, '_thumbnail_id', $thumbnail_id );
		} else {
			return delete_post_meta( $post->ID, '_thumbnail_id' );
		}
	}
	return false;
}

Top ↑

Changelog Changelog

Changelog
Version Description
3.1.0 Introduced.


Top ↑

User Contributed Notes User Contributed Notes

  1. Skip to note 1 content
    Contributed by Aurovrata Venet

    To programmatically setup an uploaded image file as a thumbnail, you can use the following code…

    /*
     * $file is the path to your uploaded file (for example as set in the $_FILE posted file array)
     * $filename is the name of the file
     * first we need to upload the file into the wp upload folder.
     */
    $upload_file = wp_upload_bits( $filename, null, @file_get_contents( $file ) );
    i
    f ( ! $upload_file['error'] ) {
      // if succesfull insert the new file into the media library (create a new attachment post type).
      $wp_filetype = wp_check_filetype($filename, null );
    
      $attachment = array(
        'post_mime_type' => $wp_filetype['type'],
    	'post_parent'    => $post_id,
    	'post_title'     => preg_replace( '/\.[^.]+$/', '', $filename ),
    	'post_content'   => '',
    	'post_status'    => 'inherit'
      );
    
      $attachment_id = wp_insert_attachment( $attachment, $upload_file['file'], $post_id );
    
      if ( ! is_wp_error( $attachment_id ) ) {
         // if attachment post was successfully created, insert it as a thumbnail to the post $post_id.
         require_once(ABSPATH . "wp-admin" . '/includes/image.php');
    
         $attachment_data = wp_generate_attachment_metadata( $attachment_id, $upload_file['file'] );
    
         wp_update_attachment_metadata( $attachment_id,  $attachment_data );
         set_post_thumbnail( $post_id, $attachment_id );
       }
    }
    

You must log in before being able to contribute a note or feedback.