关于 javascript:convert multipart form (input type = file) into WordPress media library upload

convert multipart form (input type = file) into WordPress media library upload

我正在尝试修改一个 wordpress 插件,并且需要确定调整我想要的更改是否可行。

我正在尝试修复的不良功能:

此插件使用自定义帖子。当用户创建这种类型的新帖子时,会有一个上传图片的按钮。此上传依赖于多部分(输入类型 = 文件)而不是媒体库。我试图拦截这个过程并坚持媒体上传器......然后将数据传递给下一个函数,就好像它来自非 wordpress 多部分表单一样。此后的大量功能依赖于以某种方式传入的数据,这就是为什么我试图模仿自然上传文件的结果。

我坚持的问题:

  • 提交后调用的函数正在等待 $_FILES 数组数据进入。我不确定是否可以将我自己的数据(从媒体上传器 javascript 返回)强制到此数组中

  • 即使我可以强制将数据放入 $_FILES,将返回的 JavaScript 值捕获到 PHP 变量中似乎也是个问题。 - 我正在考虑使用'on_submit'并制作一个JS函数来用值填充HTML输入......但我想不出之后如何轻松地将这些值放入$_FILES。

  • 媒体库确实使用了 $_FILES 数组(wordpress 核心包含/media.php),但是当我在插件文件中使用 var_dump 时,这些值都为空。


这是一种方法。从您的插件中删除有问题的文件上传器。

1
2
3
4
5
6
7
add_filter('add_meta_boxes', 'hide_meta_boxes_file_uploader');

function hide_meta_boxes_file_uploader() {

    remove_meta_box('metabox_id', 'custom_post_type', 'context');//edit value accordingly

}

然后按照此处所述添加您自己的媒体上传器。只需将字段名称设置为您删除的 meta_box 的字段名称即可。


我意识到在不同的地方更改代码更合适。使用 wp_insert_attachment.

将 $_FILE 表单值作为帖子附件插入到数据库中

这就是我所做的

  • 我添加了我的媒体库上传器代码(javascript)
  • 收集 wp_insert_attachment 所需的返回 JS 数据(特别是:URL、Mime 类型、标题)
  • 将这些值附加到我表单中的一些隐藏输入(以使用 $_POST 数组访问它们)
  • 将 wp_insert_attachment 设置为等于收集的 $_POST 值 - 将值发送到数据库,就像它来自常规帖子一样。