Answer a question

// Auto post ( Unique File Date ).
$postData = array(
    'post_category' => array( $Category ),
    'post_status' => $Post_Status,
    'post_type' => $Post_Type
);
$post_id = wp_insert_post( $postData );

$getImageFile = 'http://localhost/Multisite/test2/wp-content/uploads/sites/4/Auto Post/twitter.png';

$attach_id = wp_insert_attachment( $postData, $getImageFile, $post_id );
require_once( ABSPATH . 'wp-admin/includes/image.php' );

$attach_data = wp_generate_attachment_metadata( $attach_id, $getImageFile );

wp_update_attachment_metadata( $attach_id, $attach_data );

set_post_thumbnail( $post_id, $attach_id );

The code above make a post successfully but it is not setting the post featured image. I don't know what I am doing wrong here.

Answers

Use different $postData for the attachment:

$wp_filetype = wp_check_filetype( $getImageFile, null );

$attachment_data = array(
    'post_mime_type' => $wp_filetype['type'],
    'post_title' => sanitize_file_name( $getImageFile ),
    'post_content' => '',
    'post_status' => 'inherit'
);

$attach_id = wp_insert_attachment( $attachment_data, $getImageFile, $post_id );

Currently you're passing the identical post data to the post and its attachment post.

Logo

更多推荐