重要:本文最后更新于2019-06-29 08:39:41
,某些文章具有时效性,若有错误或已失效,请在下方留言或联系九月网。
好像现在的站长都喜欢让用户投稿,最近看上了一款前端富文本编辑器quill,顺便做下前端投稿的功能。前端投稿最重要的就是媒体文件的上传,quill富文本编辑器也提供了相应的api,我们完全可以自己实现前端上传媒体文件的功能。这篇文章主要涉及到WordPress的媒体上传函数wp_insert_attachment的使用,PHP接口的写法,ajax上传文件并回调的应用。来和我一起打造一款自己的前端富文本编辑器吧!
WordPress前端投稿实现图片上传
首先新建个HTML页面,里面写上加载quill前端编辑器的基本代码,直接参考quill官网的开发文档快速接入步骤说明即可。我这里就不贴HTML头部和底部了,自己写吧。
引入quill样式
引入quill编辑器的js支持
quill编辑器加载容器
quill编辑器初始化配置
上面部分只是为了加载quill富文本编辑器而已,现在用浏览器访问下应该可以看到一个完整的富文本编辑器了,下面接着写上传图片的js代码。
重写编辑器的图片预览方法
好了,前端部分结束,下面是PHP实现的WordPress媒体上传接口,注意文件引用路径。
require dirname(__FILE__).'/../../../../wp-load.php'; //WordPress核心,根目录下,自己换 $file = $_FILES['files']; if ( !empty( $file ) ) { // 获取上传目录信息 $wp_upload_dir = wp_upload_dir(); // 将上传的图片文件移动到上传目录 $basename = $file['name']; $filename = $wp_upload_dir['path'] . '/' . $basename; $re = rename( $file['tmp_name'], $filename ); $attachment = array( 'guid' => $wp_upload_dir['url'] . '/' . $basename, 'post_mime_type' => $file['type'], 'post_title' => preg_replace( '/\.[^.]+$/', '', $basename ), 'post_content' => '', 'post_status' => 'inherit' ); $attach_id = wp_insert_attachment( $attachment, $filename ); require_once( ABSPATH . 'wp-admin/includes/image.php' ); $attach_data = wp_generate_attachment_metadata( $attach_id, $filename ); wp_update_attachment_metadata( $attach_id, $attach_data ); $re = array('code'=>0,'msg'=>'上传成功','data'=>array('src'=>wp_get_attachment_url( $attach_id ),'title'=>'')); print_r(json_encode($re)); }
有点奇怪的是我在PHP返回了json数据,但js接收到的却是字符串,只好在js中转化了下。