记录WordPress REST API图片上传流程

记录一下 WordPress 通过 REST API进行图片上传的流程。

参考文档:微信小程序图片上传流程相关

一、获取前端提交数据

从微信小程序的 wx.uploadFile() 方法上传图片时,wordpress 端可通过 $_FILES 来接收上传的数据,示例如下

Array(
	[file] => Array(
		[name] => BdBfhEpY219R0efba6f81d1eb93cc5ee6966a999e314.png
		[type] => image/png
		[tmp_name] => /tmp/phpv7aq9U
		[error] => 0
		[size] => 1222
	)
)

注意不同的前端处理,得到的数据结构会有所差异,但上述几个字段是不变的。

二、将图片上传到 WordPress 附件目录

使用 wp_handle_upload 函数将图片上传到 WordPress 附件目录,wp_handle_upload() 调用示例如下

$upload_file = wp_handle_upload($_FILES['file'], ['test_form' => false]);

三、将图片插入 posts 数据表

此前操作是将图片上传到了 wordpress 附件目录,但是并未入库,也就无法从管理后端线上处理,因此需要使用 wp_insert_attachment() 函数调用 wp_insert_post() 将图片插入到 WordPress 的 posts 数据表。

在图片插入到 posts 表之前,wp_insert_post() 会使用 wp_unique_post_slug() 函数设置唯一的 post_slug。