当前位置: 首页 > 工具软件 > bbPress > 使用案例 >

【wordpress】bbPress支持用户上传图片并限制文件类型及大小

颜举
2023-12-01

因为bbPress新版本默认设置的编辑器是没有开启可视化编辑的,所以首先我们需要把这个功能打开,在function.php中加入以下代码:

//开启bbPress的可视化编辑
function simon_bbp_enable_visual_editor( $args = array() ) {
 $args['tinymce'] = true;
 $args['quicktags'] = false; //是否允许开启html编辑,建议false
 $args['teeny'] = false; //是否开启简化编辑栏
 return $args;
}
add_filter( 'bbp_after_get_the_content_parse_args', 'simon_bbp_enable_visual_editor' );

开启可视化编辑有一个安全问题,我们需要对其进行限制:

//清除粘贴内容的格式
function simon_bbp_tinymce_paste_plain_text( $plugins = array() ) {
 $plugins[] = 'paste';
 return $plugins;
}
add_filter( 'bbp_get_tiny_mce_plugins', 'simon_bbp_tinymce_paste_plain_text' );

对前台编辑器进行调整,插入对媒体文件的支持:

//支持bbpress上传内容//
add_filter( 'bbp_after_get_the_content_parse_args', 'simon_bbpress_upload_media' );
function simon_bbpress_upload_media( $args ) {
 $args['media_buttons'] = true;
 return $args;
}
//允许用户投稿时上传文件
if ( current_user_can('contributor') && !current_user_can('upload_files') )
 add_action('admin_init', 'allow_contributor_uploads');
 
 function allow_contributor_uploads() {
 $contributor = get_role('contributor');
 $contributor->add_cap('upload_files');
}

对不同的用户组设定允许上传的文件类型:

//不同用户上传的类型
function custom_upload_mimes ( $existing_mimes=array() ) {
 unset ($existing_mimes);//禁止上传任何文件
 if( current_user_can( 'publish_posts' ) && !current_user_can( 'publish_pages' ) ) {
 //允许作者(Author)上传的类型
 $existing_mimes['jpg|jpeg|gif|png']='image/image';//允许用户上传jpg,gif,png文件
 //$existing_mimes['zip']='application/zip'; //允许用户上传zip压缩包
 //$existing_mimes['pdf']='application/pdf'; //允许用户上传pdf文件
 
 }elseif( current_user_can( 'edit_posts' ) && !current_user_can( 'publish_posts' ) ) {
 //允许投稿者(Contributor)上传的类型
 $existing_mimes['jpg|jpeg|gif|png']='image/image';
 //$existing_mimes['pdf']='application/pdf'; 
 
 }else{
 //其他用户角色上传的类型
 $existing_mimes['jpg|jpeg|gif|png']='image/image';
 }
 return $existing_mimes;
}

控制一下允许上传文件的大小:

//不同用户上传的大小
function max_up_size() {
 if( current_user_can( 'publish_posts' ) && !current_user_can( 'publish_pages' ) ) {
 return 2048*1024; // 允许作者(Author)上传 2M
 }elseif( current_user_can( 'edit_posts' ) && !current_user_can( 'publish_posts' ) ) {
 return 1024*1024; // 允许投稿者(Contributor)上传 1M
 }else{
 return 500*1024; // 其他用户角色上传 500 kb
 }
}

为管理员角色添加豁免:

//只对非管理员执行这两个函数(即:对管理员不生效)
if( !current_user_can( 'manage_options' ) ) {
 
 add_filter('upload_mimes', 'custom_upload_mimes');
 add_filter('upload_size_limit', 'max_up_size');
 
}

到此为止,WordPress后台发布文章、帖子、回复都可以上传媒体文件了,但是在bbPress的自带前端编辑器还是无法上传的,因为用户组权限的问题,如果想要普通会员也能够在前台上传图片,那么还是需要写一个绕过角色权限的脚本。

 类似资料: