因为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的自带前端编辑器还是无法上传的,因为用户组权限的问题,如果想要普通会员也能够在前台上传图片,那么还是需要写一个绕过角色权限的脚本。