将多部分表单(输入类型=文件)转换为WordPress媒体库上传

时间:2016-04-10 17:14:12

标签: javascript php wordpress file-upload media

我正在尝试修改wordpress插件,需要决定调整我想要的更改是否可行。或者不可能。

我正在尝试修复的错误功能:

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

我坚持的问题:

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

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

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

2 个答案:

答案 0 :(得分:1)

这是一种方法。 {/ 3}}插件中的违规文件上传器。

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

}

然后按照概述Remove添加您自己的媒体上传者。只需将字段名称设置为您删除的meta_box的字段名称,就可以全部设置。

答案 1 :(得分:0)

我意识到在不同的地方更改代码更合适。使用wp_insert_attachment将$ _FILE表单值作为帖子附件插入到数据库中。

这就是我的所作所为

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