如何使用Wordpress自定义字段/元框附加文件?

时间:2010-04-01 20:54:37

标签: wordpress upload custom-fields

我正在使用Wordpress的add_meta_box()功能将自定义元字段添加到“添加新帖子”页面like this。我希望其中一个字段允许用户上传文件,以便可以将单个图像,pdf,音频文件或视频与帖子相关联。

我见过的最接近的例子是这一个(链接被删除*)。不幸的是,它不适合我的需要,因为我希望我的文件由Wordpress的Media Uploader处理 - 所以它应该在之后出现在媒体库中,并且应该根据媒体设置生成缩略图。

我认为理想情况下会有一种方法可以使用Wordpress现有的“添加媒体”对话框,只需将上传文件的URL输出到文本框中,但我不知道该怎么做。 This question是类似的,但答案有点笨重 - 我希望这对我的最终用户来说非常简单。

我怎样才能做到这一点?请不要推荐Flutter或Magic Fields等插件 - 我试过这些插件并且它们不适合我的目的(我希望图像由Wordpress的Media Uploader处理)。我使用的是Wordpress 3.0-alpha。

(* =由于恶意软件报告而删除了链接;它位于存档中,但风险自负)

5 个答案:

答案 0 :(得分:2)

我最终为自己想出了这个并让它按照我想要的方式工作,并且认为我会为发现这个问题并且很好奇的人发布更新。

我没有使用任何插件,但写了一个自定义函数来处理我主题的文件上传。我使用了内置的Wordpress函数,如save_custom_postdata(),wp_handle_upload(),wp_insert_attachment(),wp_generate_attachment_metadata()和wp_update_attachment_metadata()。

我还必须使用add_action('admin_head'...)添加一些JavaScript,将“multipart / form-data”添加到Edit Post页面上的form标签,以允许文件上传。

我会发布我的代码,但它对我的项目非常长且具体。

答案 1 :(得分:2)

您无需使用JavaScript编辑表单。这可以使用post_edit_form_tag函数,如下所示:

add_action( 'post_edit_form_tag' , 'post_edit_form_tag' );

function post_edit_form_tag( ) {
    echo ' enctype="multipart/form-data"';
}

http://codex.wordpress.org/Plugin_API/Filter_Reference/post_edit_form_tag提供了更多详细信息(包括示例)。

答案 2 :(得分:1)

看看Image Widget - 一个精心制作的小部件,可以做你想要的,但作为一个小部件。也许您可以将其转换为添加新帖子页面。

您可以尝试的另一个插件是Pods CMS。可能有点矫枉过正,但是当您使用此文件进行文件上载时,它们会自动添加到媒体库中。

答案 3 :(得分:0)

使用WordPress Meta Box时,此WordPress Meta Box PHP Helper class可能对您有帮助。

答案 4 :(得分:0)

我认为这正是您所寻找的:http://wordpress.org/extend/plugins/nkmimagefield/ 显然它不支持自定义帖子类型,但应该做一点点黑客攻击。它已经完成了与媒体编辑器接口的艰苦工作。