图像和某些帖子数据将被保存/更新,因为它们应该使用此功能:
> wp_insert_attachment
> wp_update_attachment_Metadata
问题是当我想要删除一个旧的图像(当保存一个新的图像时).
wp_delete_attachment不会删除图像(它似乎删除db中的东西..).我在想,问题在于不使用wp_handle_upload. (当我通过上传btn上传图像,并使用$_FILES接收图像,然后使用wp_handle_upload上传它 – 删除工作)
有没有人想到在我的情况下删除图像的正确方法是什么?
也许我可以使用wp_handle_upload正确地保存它,即使我在base64中有一个图像?
感谢任何信息.
编辑:我也尝试保存图像与wp_upload_bits和wp_delete_attachment仍然没有工作.
另一件事我检查:the code的wp_handle_upload函数位于wp-admin/includes/file.php
:我没有看到一个简单的方法来修改或复制现有的函数,并添加一个自定义的,将接受base64映像而不是像$_FILES中的文件.有人有“base64 to $_FILES”的解决方法吗?
所以首先你必须将base64图像保存在临时目录中,然后通过使用相对路径和其他数据,您可以使用wp_insert_attachment
在数据库中插入记录,链接包含适当的例子.
此功能将添加图像到媒体库.
要生成更多缩略图,您可以使用wp_generate_attachment_metadata
功能.此功能将更新wp_postMeta表,还具有图像和缩略图的所有细节.
之后,您可以使用wp_delete_attachment
功能从目录和数据库中删除图像.
另一个解决方案
>使用this link的功能从base64字符串生成图像.
>然后得到MIME类型,图像的大小和路径
>创建一个类似于$_FILES的数组.
然后把它传给wp_handle_upload
更新:
$_FILES数组的结构是这样的
array(5) { 'name' => string(8) "file name.extension" // file name with extension 'type' => string(0) "" // mime type of file,i.e. image/png 'tmp_name' => string(0) "" // absolute path of file on disk. 'error' => int(2) // 0 for no error 'size' => int(0) // size in bytes }
您可以像上面那样创建所有细节的数组,使用各种文件处理PHP函数来获取大小和MIME类型.名称是你想要放置的,而tmp_name是存在文件的服务器上文件的路径,在您的文件夹位置,从base64字符串保存文件.