我正在尝试以编程方式将图像上传到Wordpress。除了最后两行我尝试生成图像缩略图和其他中间尺寸之外,一切正常。函数wp_generate_attachment_metadata()似乎正在生成新的图像大小,但它然后尝试将结果图像显示为二进制而不是返回适当的元数据数组。为什么二进制文件(见下图)会回显到我的屏幕上?我如何压制它?
$filetype = wp_check_filetype( basename( $image ), null );
$attachment = array(
'guid' => wp_upload_dir()['url'] . '/' . basename( $image ),
'post_mime_type' => $filetype['type'],
'post_content' => '',
'post_status' => 'inherit',
'post_title' => preg_replace( '/\.[^.]+$/', '', basename( $image ) )
);
$attach_id = wp_insert_attachment( $attachment, $image );
update_field('image', $attach_id, $post_id);
$attach_data = wp_generate_attachment_metadata( $attach_id, $image );
$response = wp_update_attachment_metadata( $attach_id, $attach_data );
答案 0 :(得分:1)
事实证明,在函数显示的乱码之后,是一条简短的错误消息(无法打开流:HTTP包装器确实 不支持可写连接)。事实证明,函数“wp_generate_attachment_metadata”需要一个绝对的图像路径。将$ image变量更改为绝对路径(来自Web路径,http://website.com/path/to/image.png)修复了问题。