汇码屋
  • 首页
  • 网站源码
    • HTML页面
    • 商城团购
    • 悬赏任务
    • 小说源码
    • 图片素材
    • 淘客源码
    • 支付源码
    • 发卡源码
    • 签名分发
    • 影音源码
    • 直播源码
    • 区块链/交易所
  • 模板插件
    • WordPress
    • Discuz
    • Zblog
    • EMlog
    • 易优CMS
    • 帝国CMS
    • 苹果CMS
    • dedecms
  • 微信程序
    • 公众号
    • 小程序
    • 微信其他
  • 游戏源码
    • 棋牌源码
    • 手游源码
    • 端游源码
  • 精品源码
    • 网站源码
    • 菠菜源码
    • 棋牌源码
  • VIP介绍
登录

WordPress 限制不同用户角色可上传的文件类型及大小

2023-01-07 分类:建站教程 热度:4.8K 评论: 0
  • 广告投放
  • 淘朔云

开放注册的WordPress站点,一般都会根据不同等级的用户角色来赋予不同的权限。文件上传功能就是一个比较常用的功能,那么,如何限制不同用户角色可上传的文件类型及大小呢?下面倡萌就来说说这个问题。

让用户拥有上传文件的权限

默认情况下,有些用户是不允许上传文件的,你可以在主题的 functions.php 添加下面的代码:

//允许用户投稿时上传文件
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');
}

上面的代码就是给 ‘contributor’ 这个用户角色添加了 ‘upload_files’ (上传文件)的权限。

限制用户上传文件的类型

首先,大家可以先了解一下 WordPress 默认允许上传的文件类型,打开WordPress的 /wp-includes/functions.php 文件,然后搜索 function wp_get_mime_types 定位到那里,你就会看到详细的文件类型:

function wp_get_mime_types() {
   // Accepted MIME types are set here as PCRE unless provided.
   return apply_filters( 'mime_types', array(
   // Image formats
   'jpg|jpeg|jpe' => 'image/jpeg',
   'gif' => 'image/gif',
   'png' => 'image/png',
   'bmp' => 'image/bmp',
   'tif|tiff' => 'image/tiff',
   'ico' => 'image/x-icon',
   // Video formats
   'asf|asx|wax|wmv|wmx' => 'video/asf',
   'avi' => 'video/avi',
   'divx' => 'video/divx',
   'flv' => 'video/x-flv',
   'mov|qt' => 'video/quicktime',
   'mpeg|mpg|mpe' => 'video/mpeg',
   'mp4|m4v' => 'video/mp4',
   'ogv' => 'video/ogg',
   'mkv' => 'video/x-matroska',
   // Text formats
   'txt|asc|c|cc|h' => 'text/plain',
   'csv' => 'text/csv',
   'tsv' => 'text/tab-separated-values',
   'ics' => 'text/calendar',
   'rtx' => 'text/richtext',
   'css' => 'text/css',
   'htm|html' => 'text/html',
   // Audio formats
   'mp3|m4a|m4b' => 'audio/mpeg',
   'ra|ram' => 'audio/x-realaudio',
   'wav' => 'audio/wav',
   'ogg|oga' => 'audio/ogg',
   'mid|midi' => 'audio/midi',
   'wma' => 'audio/wma',
   'mka' => 'audio/x-matroska',
   // Misc application formats
   'rtf' => 'application/rtf',
   'js' => 'application/javascript',
   'pdf' => 'application/pdf',
   'swf' => 'application/x-shockwave-flash',
   'class' => 'application/java',
   'tar' => 'application/x-tar',
   'zip' => 'application/zip',
   'gz|gzip' => 'application/x-gzip',
   'rar' => 'application/rar',
   '7z' => 'application/x-7z-compressed',
   'exe' => 'application/x-msdownload',
   // MS Office formats
   'doc' => 'application/msword',
   'pot|pps|ppt' => 'application/vnd.ms-powerpoint',
   'wri' => 'application/vnd.ms-write',
   'xla|xls|xlt|xlw' => 'application/vnd.ms-excel',
   'mdb' => 'application/vnd.ms-access',
   'mpp' => 'application/vnd.ms-project',
   'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
   'docm' => 'application/vnd.ms-word.document.macroEnabled.12',
   'dotx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.template',
   'dotm' => 'application/vnd.ms-word.template.macroEnabled.12',
   'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
   'xlsm' => 'application/vnd.ms-excel.sheet.macroEnabled.12',
   'xlsb' => 'application/vnd.ms-excel.sheet.binary.macroEnabled.12',
   'xltx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.template',
   'xltm' => 'application/vnd.ms-excel.template.macroEnabled.12',
   'xlam' => 'application/vnd.ms-excel.addin.macroEnabled.12',
   'pptx' => 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
   'pptm' => 'application/vnd.ms-powerpoint.presentation.macroEnabled.12',
   'ppsx' => 'application/vnd.openxmlformats-officedocument.presentationml.slideshow',
   'ppsm' => 'application/vnd.ms-powerpoint.slideshow.macroEnabled.12',
   'potx' => 'application/vnd.openxmlformats-officedocument.presentationml.template',
   'potm' => 'application/vnd.ms-powerpoint.template.macroEnabled.12',
   'ppam' => 'application/vnd.ms-powerpoint.addin.macroEnabled.12',
   'sldx' => 'application/vnd.openxmlformats-officedocument.presentationml.slide',
   'sldm' => 'application/vnd.ms-powerpoint.slide.macroEnabled.12',
   'onetoc|onetoc2|onetmp|onepkg' => 'application/onenote',
   // OpenOffice formats
   'odt' => 'application/vnd.oasis.opendocument.text',
   'odp' => 'application/vnd.oasis.opendocument.presentation',
   'ods' => 'application/vnd.oasis.opendocument.spreadsheet',
   'odg' => 'application/vnd.oasis.opendocument.graphics',
   'odc' => 'application/vnd.oasis.opendocument.chart',
   'odb' => 'application/vnd.oasis.opendocument.database',
   'odf' => 'application/vnd.oasis.opendocument.formula',
   // WordPerfect formats
   'wp|wpd' => 'application/wordperfect',
   ) );
}

=> 的前面为格式,后面为格式描述。如果你要禁止上传其中的某些类型,可以参考下面的例子:

将下面的代码添加到主题的 functions.php 文件:

//禁止上传avi和mp4格式的文件
add_filter('upload_mimes', 'custom_upload_mimes');
function custom_upload_mimes ( $existing_mimes=array() ) {
   unset ($existing_mimes['avi']);
   unset ($existing_mimes['mp4']);
   return $existing_mimes;
}

如果你还要禁止更多,可以按照 unset ($existing_mimes[‘格式’]); 样例添加即可。

如果你仅仅只需要允许用户上传几种类型而已,还可以通过下面的更简洁的方法,代码添加到主题的 functions.php 文件:

//只允许上传图片文件
add_filter('upload_mimes', 'custom_upload_mimes');
function custom_upload_mimes ( $existing_mimes=array() ) {
   unset ($existing_mimes);//禁止上传任何文件
   $existing_mimes['jpg|jpeg|gif|png']='image/image';//允许用户上传jpg,gif,png文件
   return $existing_mimes;
}

如果你还要允许上传其他格式,重复使用 $existing_mimes[‘格式’]=’描述’; 即可。

限制用户上传的文件大小

同样在主题的 functions.php 文件中,添加下面的代码:

//限制上传文件的最大体积
function max_up_size() {
   return 500*1024; // 500 kb
}
add_filter('upload_size_limit', 'max_up_size');

上面的例子是限制所有用户上传的文件的最大体积为 500 kb (1M =1024*1024)。

注意:主机空间和WordPress本身一般设置了允许上传的文件的最大体积,所以在这里设置需要考虑到这点。

限制不同用户角色可上传的文件类型及大小

其实上面已经给出了限制类型和大小的方法,要根据不同用户角色来限制,只需要添加角色判断代码即可。倡萌举个综合的例子:

//不同用户上传的类型
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');
}
建站教程
下载说明:
1.本站所有资源均来源于互联网,不保证100%完整、不提供任何技术支持。
2.如遇下载链接失效、解压密码错误、源码问题反馈、存在版权侵权等问题请点击 内容投诉 本站将在第一时间解决处理。
3.在下载源码前,请务必要仔细阅读并接受 购前/下载协议 购买即视为您同意该协议!
汇码屋 » WordPress 限制不同用户角色可上传的文件类型及大小
汇码屋

汇码屋

分享到:
上一篇
WordPress 使用阿里云对象存储 OSS 进行静态资源 CDN 加速
下一篇
宝塔纯净版 7.6.0版本 免注册,免登陆,专业版 [稳定版本/推荐]

相关推荐

  • TikTok跨境商城源码详细搭建教程
  • 通用找回后台密码方法教程
  • 宝塔纯净版 7.6.0版本 免注册,免登陆,专业版 [稳定版本/推荐]
  • WordPress 使用阿里云对象存储 OSS 进行静态资源 CDN 加速
  • 宝塔面板切换旧版本的方法_bt面板怎么降级_btPanel回滚历史版本教程
  • 宝塔面板教程-宝塔面板安装使用中常见的9个问题及答案详解
  • 支付宝当面付怎么开通?支付宝当面付公钥、私钥申请与配置教程
  • 教你一招解决织梦网站出现Request var not allow错误的方法
  • 网站安装常见问题总结(持续更新)
  • 微星全套棋牌游戏完整源码开源编译教程
  • 相关内容
    WordPress 限制不同用户角色可上传的文件类型及大小
    网站安装常见问题总结(持续更新)
    WordPress 限制不同用户角色可上传的文件类型及大小
    TikTok跨境商城源码详细搭建教程
    WordPress 限制不同用户角色可上传的文件类型及大小
    通用找回后台密码方法教程
    WordPress 限制不同用户角色可上传的文件类型及大小
    2019全新UI陌陌棋牌最详细完整教程
    WordPress 限制不同用户角色可上传的文件类型及大小
    教你一招解决织梦网站出现Request var not allow错误的方法
    推荐源码
    WordPress 限制不同用户角色可上传的文件类型及大小
    新版zblog模板仿糗事百科笑话网站模板 自适应主题
    WordPress 限制不同用户角色可上传的文件类型及大小
    一起看视频源码 Plooks大型视频在线一起看网站源码
    WordPress 限制不同用户角色可上传的文件类型及大小
    威信娱乐地方玩法房卡游戏 威信大贰+威信麻将+跑的快+茶馆俱乐部
    WordPress 限制不同用户角色可上传的文件类型及大小
    V免签支付源码,支付宝微信在线免签约收款回调系统带监控
    WordPress 限制不同用户角色可上传的文件类型及大小
    离雨尊星房卡棋牌组件完整版 金币场+休闲场 服务端+安卓IOS客户端+数据库脚本+web后台
    WordPress 限制不同用户角色可上传的文件类型及大小
    2021亲测响应式PHP个人自动发卡源码-AZ发卡网源码 对接免签约易支付
    WordPress 限制不同用户角色可上传的文件类型及大小
    咻一咻集福卡 类似支付宝集福卡
    WordPress 限制不同用户角色可上传的文件类型及大小
    德友会旗舰版棋牌组件 德州+金花+牛牛三合一 基于网狐旗舰版二次开发
    WordPress 限制不同用户角色可上传的文件类型及大小
    2020全新易航跑步机源码区块链矿机系统矿池挖矿完美运营可二开带购物商城
    WordPress 限制不同用户角色可上传的文件类型及大小
    「亲测」理财小游戏源码-酒厂分润理财源码 带独家搭建教程
    热门标签
    WordPress模板 区块链/交易所 网站源码 理财源码 影视源码 帝国cms模板 悬赏任务源码 支付源码 WordPress插件 pbootcms模板 微盘源码 博客源码 商城源码 小程序源码 手游源码 视频教程 易优cms模板 网站优化 网址导航源码 小说源码 Discuz模板 苹果cms模板 贷款源码 html页面 织梦模板
    • 11179会员总数(位)
    • 5114资源总数(个)
    • 0本周发布(个)
    • 0今日发布(个)
    • 2061稳定运行(天)

    欢迎您光临本站,秉承服务宗旨,履行"站长"责任,销售只是起点,服务永无止境!

    会员介绍 常见问题
    汇码屋

    本站每日更新精品源码,宁缺毋滥,只分享能用的精品源码。目前暂时源码数量还少,VIP价格较低,早上车早赚到!

    本站导航
    • 关于我们
    • 常见问题
    • 网站地图
    更多介绍
    • 隐私协议
    • 购前须知
    • 免责声明
    快速搜索
    本站不提供免费技术支持,请直接详细描述问题!
    本站所有作品均为会员提供或网上搜集,版权归原作者所有,如需商业用途或转载请与作者联系,网站所有内容仅供观摩学习交流之用,将不对任何资源负法律责任。

    Copyright 2019-2025 汇码屋 版权所有,并保留所有权利

    汇码屋
    • 首页
    • 网站源码►
      • HTML页面
      • 商城团购
      • 悬赏任务
      • 小说源码
      • 图片素材
      • 淘客源码
      • 支付源码
      • 发卡源码
      • 签名分发
      • 影音源码
      • 直播源码
      • 区块链/交易所
    • 模板插件►
      • WordPress
      • Discuz
      • Zblog
      • EMlog
      • 易优CMS
      • 帝国CMS
      • 苹果CMS
      • dedecms
    • 微信程序►
      • 公众号
      • 小程序
      • 微信其他
    • 游戏源码►
      • 棋牌源码
      • 手游源码
      • 端游源码
    • 精品源码►
      • 网站源码
      • 菠菜源码
      • 棋牌源码
    • VIP介绍
    剪切Ctrl+X复制Ctrl+C粘贴Ctrl+V全选Ctrl+A
    搜索翻译
    在新窗口中打开链接复制链接地址
    返回前进重新加载Ctrl+R
    复制本页网址保存到桌面打印...Ctrl+P

      最新公告

      本站域名已更换为:https://www.huimawu.com 请收藏防失联
      本站服务器已续费3年,汇聚全网多家源码站VIP资源,更新及时
      永久会员限时特惠仅需129元!随时恢复原价