使用WordPress开发主题的时候,经常会遇到需要从前端上传图片的需求,咋一看,还挺麻烦的。其实WordPress已经已经为我们提供了非常简单的接口,上传附件只需要几行代码就能搞定。
主要工作就是引用几个必须的文件,然后使用media_handle_upload
和update_post_meta
功能,我们来看一下代码。
function insert_attachment($file_handler,$post_id,$setthumb='false') {
// 检查附件是否上传成功
if ($_FILES[$file_handler]['error'] !== UPLOAD_ERR_OK) __return_false();
require_once(ABSPATH . "wp-admin" . '/includes/image.php');
require_once(ABSPATH . "wp-admin" . '/includes/file.php');
require_once(ABSPATH . "wp-admin" . '/includes/media.php');
//上传到媒体库并返回附件的ID
$attach_id = media_handle_upload( $file_handler, $post_id );
//把上传成功的附件附加到文章
if ($setthumb) update_post_meta($post_id,'_thumbnail_id',$attach_id);
return $attach_id;
}
怎么使用上面的函数
这一段是给新手准备的,高手可以直接略过,使用的时候直接把PHP的全局变量$_FILES
作为函数的第一个参数,需要插入的文章id作为第二个参数就可以了。
if ($_FILES) {
foreach ($_FILES as $file => $array) {
$newupload = insert_attachment($file,$post_id);
}
}
文件上传成功后,在WordPress后台看到的效果和直接在后台插入缩略图是一样的。怎么样?是不是非常简单?如果你有更简单的方法,欢迎在评论中提出。
11 thoughts on “WordPress 从前端上传图片并作为文章的附件”
求大神赐教怎么在投稿中加入上传图片功能,试了很多插件,都不好用,可视化编辑器可以实现,但是上传图片非得注册帐号登录。
投稿的时候添加个文章上传的表单,post之后用上面的函数处理一下即可。
能不能做个教程,相信会有很多人需要的
你说的是视频教程?还是弄个演示程序?
直接写篇文章啊,我找遍了全网络,就没有一个这种可以插入视频的投稿好用的。
还有建议你开启评论回复后邮件提醒啊,不然很影响互动的说。
多谢建议,有时间会写一个这样的完整教程,回复后邮件提醒已开启,不知道你能不能收到。
的确没收到……
我再测试一下看是什么问题,我自己添加了一个邮件,填写的是我自己的QQ邮箱,可以收到提醒邮件。
还有你的URL是中文的,对SEO不友好啊。
这个应该没有多大影响吧,你看到的应该是部分,发布文章的时候,如果我大部分都修改成英文了。有些在手机上发布的,不好修改,就直接中文了。
URL对SEO影响还是很大的。