使用 wp_insert_post 设置特色图片

Set featured image using wp_insert_post

// 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 );

上面的代码成功制作了 post,但没有设置 post 特色图片。我不知道我在这里做错了什么。

对附件使用不同的$postData

$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 );

目前您正在将相同的 post 数据传递给 post 及其附件 post。

我用的功能 wp_upload_bits 是新的WordPress功能,方便上传图片。在我的代码的第二行 $post 是你的 $post_id id,对于上传文件目录,我创建了自定义文件夹 custom-uploads 以便你更好地理解,或者你可以在我的第 4 行删除它编码为 './'. 'custom-uploads' . '/'

$upload = wp_upload_bits($_FILES["file"]["name"], null, file_get_contents($_FILES["file"]["tmp_name"]));

$post_id = $posts; //set post id to which you need to set post thumbnail
$filename = $upload['file'];
$uploadfile = $uploaddir['basedir'] . '/'. 'custom-uploads' . '/';

move_uploaded_file($filename, $uploadfile);  // (file name , designation)

$wp_filetype = wp_check_filetype($filename, null );
$attachment = array(
    'post_mime_type' => $wp_filetype['type'],
    'post_title' => sanitize_file_name($filename),
    'post_content' => '',
    'post_status' => 'inherit'
);
$attach_id = wp_insert_attachment( $attachment, $filename, $posts );
require_once(ABSPATH . 'wp-admin/includes/image.php');
$attach_data = wp_generate_attachment_metadata( $attach_id, $filename );

wp_update_attachment_metadata( $attach_id, $attach_data );
set_post_thumbnail( $post_id, $attach_id );  // set post thumnail (featured image) for the given post