第一次接触Wordpress多用户社交类网站,接触了不少新功能,Wordpress默认全部用户上传附近大小都是一样的。

网站方要求除了管理员之外,要限制普通注册用户的上传大小限制,有插件可以实现,也可以用代码,我们给用的代码。

没限制之前都是50M:

在wp大学找到了现成的代码,根据自己需求改下就行,他这个更好,还限制了普通用户可上传的类型,我们根据需求改成了只支持图片。

//不同用户上传的类型
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文件
 
	}elseif( current_user_can( 'edit_posts' ) && !current_user_can( 'publish_posts' ) ) {
 
		//只允许投稿者(Contributor)上传图片
		$existing_mimes['jpg|jpeg|gif|png']='image/image';
 
	}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');
 
}

改之后:

作者用户只能上传2M,管理员还是50M。

其他可以参考:

WP上传限制插件:https://wordpress.org/plugins/wp-upload-restriction/#description

https://wordpress.stackexchange.com/questions/47580/give-users-a-maximum-upload-capacity-limit-the-number-of-files-a-user-can-uploa

https://stackoverflow.com/questions/55813343/how-to-increase-max-upload-file-size-for-specific-user-roles-in-wordpress

https://wordpress.stackexchange.com/questions/119964/set-a-maximum-upload-count-for-users-on-a-specific-user-role