tra*_*sis 11 php wordpress image
我正在将图像保存到uploads文件夹,但我使用的是file_put_contents而不是wp_handle_upload - 因为我在base64中获取了一个图像而不是$ _FILES中的文件.
保存/更新图像和某些发布数据,因为它们应该使用此功能:
问题是当我想删除旧图像时(保存新图像时).
wp_delete_attachment不会删除图像(虽然它似乎删除了数据库中的东西..).我认为问题在于不使用wp_handle_upload.(当我通过上传btn上传图像并使用$ _FILES接收它然后使用wp_handle_upload上传它 - 删除工作)
有谁知道在我的情况下删除图像的正确方法是什么?也许我可以使用wp_handle_upload正确保存它,即使我在base64中有图像?
谢谢你的任何信息.
编辑:我也尝试用wp_upload_bits保存图像,wp_delete_attachment仍然无法正常工作.
我检查的另一件事:wp_handle_upload函数的代码位于wp-admin/includes/file.php:我没有看到一种简单的方法来修改或复制现有函数,并添加一个自定义的函数,它将接受base64图像而不是$ _FILES中的文件.有人可能有"base64到$ _FILES"的解决方法吗?
wp_posts正如 @KamilP 所说,WP 在和表中插入记录wp_postmeta。
因此,首先您必须将 Base64 图像保存在临时目录中,然后通过使用它的相对路径和其他数据,您可以使用wp_insert_attachment,链接包含适当的示例在数据库中插入记录。此功能会将图像添加到媒体库。
要生成更多缩略图,您可以使用wp_generate_attachment_metadata函数。此函数还将更新 wp_postmeta 表以及图像和缩略图的所有详细信息。
之后,您wp_delete_attachment也可以使用函数从目录和数据库中删除图像。
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
}
Run Code Online (Sandbox Code Playgroud)
您可以像上面一样创建包含所有详细信息的数组,使用各种文件处理 PHP 函数来获取大小和 mime 类型。名称是您想要放置的任何内容,tmp_name 是文件所在服务器上的文件路径,在您的情况下是从 Base64 字符串保存文件的文件夹位置。
请参阅上面更新的链接以获取函数,该函数将为您提供来自 base64 字符串的图像。