在帖子之外使用wp_Handle_Upload

时间:2022-02-15 作者:wpdev215

我正在编写一个脚本,该脚本将在我的自定义帖子类型之前添加帖子。每个帖子都有一个文件(zip或json)作为帖子元数据,必须上传到媒体文件夹。问题是wp\\u handle\\u upload需要来自$\\u FILES superglobal的数组作为参数,而不是文件的上下文流。我尝试通过将文件移动到临时目录并手动填充$\\u全局文件来解决此问题,如下所示-

    $_FILES[\'tempFile\'] = array(
        \'name\' => pathinfo($file, PATHINFO_FILENAME),
        \'type\' => mime_content_type($tempFile),
        \'tmp_name\' => sys_get_temp_dir() . pathinfo($file, PATHINFO_FILENAME),
        \'error\' => 0,
        \'size\' => strlen(file_get_contents($tempFile)),
    );
然而,我得到了错误Specified file failed upload test. 调用wp\\u handle\\u upload时。我是否应该使用其他方法,或者我是否还缺少其他方法?谢谢

1 个回复
最合适的回答,由SO网友:Tom J Nowell 整理而成

这里没有上传,但您确实描述了侧载。

So使用media_handle_sideload 相反,例如。

$file_array = [
    \'name\'     => \'test.jpg\',
    \'tmp_name\' => \'/path/to/test.jpg\'
];

$post_id = 0;
$attachment_id = media_handle_sideload( $file_array, $post_id );
 
if ( is_wp_error( $attachment_id ) ) {
    // ... it failed
}
在此基础上还有其他功能,例如。media_sideload_image 它获取图像的URL,下载它,并通过sideload函数运行它,