亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > CMS > Wordpress > 正文

wordpress 文件上傳設置文件類型和大小(角色權限)

2024-09-07 00:50:18
字體:
來源:轉載
供稿:網友

我們最初是簡單的給所有用戶有上傳文件并且設置文件上傳可以使用media_handle_upload和wp_handle_upload 類似的函數,其實都是調用wp_handle_upload函數

這個函數的第4個參數,支持數組,代碼如下:

  1. $access = array('test_form' => false, 'mimes' => array('jpeg' => 'image/jpeg'
  2.  'png' => 'image/png','gif' => 'image/gif','jpg' => 'image/jpeg')); 

這樣寫就可以限制文件的類型,但是貌似對偽造的文件不好使,經過測試可以使用一個過濾器,完美解決這個問題,過濾器名稱:wp_handle_upload_prefilter,代碼如下:

  1. add_filter('wp_handle_upload_prefilter''custom_upload_filter' ); 
  2. function custom_upload_filter($file
  3.     $fileSize = $file['size'];//獲取文件大小 做自定義處理 
  4.     $info =getimagesize($file['tmp_name']);//獲取文件屬性 如果不是圖片將返回false 
  5.     return $file

讓用戶擁有上傳文件的權限

默認情況下,有些用戶是不允許上傳文件的,你可以在主題的 functions.php 添加下面的代碼:

  1. //允許用戶投稿時上傳文件 
  2. if ( current_user_can('contributor') && !current_user_can('upload_files') ) 
  3.    add_action('admin_init''allow_contributor_uploads'); 
  4.  
  5.    function allow_contributor_uploads() { 
  6.       $contributor = get_role('contributor'); 
  7.       $contributor->add_cap('upload_files'); 

上面的代碼就是給 'contributor' 這個用戶角色添加了 'upload_files'(上傳文件)的權限。

限制用戶上傳文件的類型

首先,大家可以先了解一下 WordPress 默認允許上傳的文件類型,打開WordPress的 /wp-includes/functions.php 文件,然后搜索 function wp_get_mime_types 定位到那里,你就會看到詳細的文件類型:

  1. function wp_get_mime_types() { 
  2.  // Accepted MIME types are set here as PCRE unless provided. 
  3.  return apply_filters( 'mime_types'array
  4.  // Image formats 
  5.  'jpg|jpeg|jpe' => 'image/jpeg'
  6.  'gif' => 'image/gif'
  7.  'png' => 'image/png'
  8.  'bmp' => 'image/bmp'
  9.  'tif|tiff' => 'image/tiff'
  10.  'ico' => 'image/x-icon'
  11.  // Video formats 
  12.  'asf|asx|wax|wmv|wmx' => 'video/asf'
  13.  'avi' => 'video/avi'
  14.  'divx' => 'video/divx'
  15.  'flv' => 'video/x-flv'
  16.  'mov|qt' => 'video/quicktime'
  17.  'mpeg|mpg|mpe' => 'video/mpeg'
  18.  'mp4|m4v' => 'video/mp4'
  19.  'ogv' => 'video/ogg'
  20.  'mkv' => 'video/x-matroska'
  21.  // Text formats 
  22.  'txt|asc|c|cc|h' => 'text/plain'
  23.  'csv' => 'text/csv'
  24.  'tsv' => 'text/tab-separated-values'
  25.  'ics' => 'text/calendar'
  26.  'rtx' => 'text/richtext'
  27.  'css' => 'text/css'
  28.  'htm|html' => 'text/html'
  29.  // Audio formats 
  30.  'mp3|m4a|m4b' => 'audio/mpeg'
  31.  'ra|ram' => 'audio/x-realaudio'
  32.  'wav' => 'audio/wav'
  33.  'ogg|oga' => 'audio/ogg'
  34.  'mid|midi' => 'audio/midi'
  35.  'wma' => 'audio/wma'
  36.  'mka' => 'audio/x-matroska'
  37.  // Misc application formats 
  38.  'rtf' => 'application/rtf'
  39.  'js' => 'application/javascript'
  40.  'pdf' => 'application/pdf'
  41.  'swf' => 'application/x-shockwave-flash'
  42.  'class' => 'application/java'
  43.  'tar' => 'application/x-tar'
  44.  'zip' => 'application/zip'
  45.  'gz|gzip' => 'application/x-gzip'
  46.  'rar' => 'application/rar'
  47.  '7z' => 'application/x-7z-compressed'
  48.  'exe' => 'application/x-msdownload'
  49.  // MS Office formats 
  50.  'doc' => 'application/msword'
  51.  'pot|pps|ppt' => 'application/vnd.ms-powerpoint'
  52.  'wri' => 'application/vnd.ms-write'
  53.  'xla|xls|xlt|xlw' => 'application/vnd.ms-excel'
  54.  'mdb' => 'application/vnd.ms-access'
  55.  'mpp' => 'application/vnd.ms-project'
  56.  'docx' => 'application/vnd.openxmlformats- 
  57. officedocument.wordprocessingml.document', 
  58.  'docm' => 'application/vnd.ms-word.document.macroEnabled.12'
  59.  'dotx' => 'application/vnd.openxmlformats- 
  60. officedocument.wordprocessingml.template', 
  61.  'dotm' => 'application/vnd.ms-word.template.macroEnabled.12'
  62.  'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
  63.  'xlsm' => 'application/vnd.ms-excel.sheet.macroEnabled.12'
  64.  'xlsb' => 'application/vnd.ms-excel.sheet.binary.macroEnabled.12'
  65.  'xltx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.template'
  66.  'xltm' => 'application/vnd.ms-excel.template.macroEnabled.12'
  67.  'xlam' => 'application/vnd.ms-excel.addin.macroEnabled.12'
  68.  'pptx' => 'application/vnd.openxmlformats- 
  69. officedocument.presentationml.presentation', 
  70.  'pptm' => 'application/vnd.ms-powerpoint.presentation.macroEnabled.12'
  71.  'ppsx' => 'application/vnd.openxmlformats-officedocument.presentationml.slideshow'
  72.  'ppsm' => 'application/vnd.ms-powerpoint.slideshow.macroEnabled.12'
  73.  'potx' => 'application/vnd.openxmlformats-officedocument.presentationml.template'
  74.  'potm' => 'application/vnd.ms-powerpoint.template.macroEnabled.12'
  75.  'ppam' => 'application/vnd.ms-powerpoint.addin.macroEnabled.12'
  76.  'sldx' => 'application/vnd.openxmlformats-officedocument.presentationml.slide'
  77.  'sldm' => 'application/vnd.ms-powerpoint.slide.macroEnabled.12'
  78.  'onetoc|onetoc2|onetmp|onepkg' => 'application/onenote'
  79.  // OpenOffice formats 
  80.  'odt' => 'application/vnd.oasis.opendocument.text'
  81.  'odp' => 'application/vnd.oasis.opendocument.presentation'
  82.  'ods' => 'application/vnd.oasis.opendocument.spreadsheet'
  83.  'odg' => 'application/vnd.oasis.opendocument.graphics'
  84.  'odc' => 'application/vnd.oasis.opendocument.chart'
  85.  'odb' => 'application/vnd.oasis.opendocument.database'
  86.  'odf' => 'application/vnd.oasis.opendocument.formula'
  87.  // WordPerfect formats 
  88.  'wp|wpd' => 'application/wordperfect'
  89.  ) ); 

=> 的前面為格式,后面為格式描述,如果你要禁止上傳其中的某些類型,可以參考下面的例子,將下面的代碼添加到主題的 functions.php 文件:

  1. //禁止上傳avi和mp4格式的文件 
  2. add_filter('upload_mimes''custom_upload_mimes'); 
  3. function custom_upload_mimes ( $existing_mimes=array() ) { 
  4. unset ($existing_mimes['avi']); 
  5. unset ($existing_mimes['mp4']); 
  6. return $existing_mimes
  7. }  

如果你還要禁止更多,可以按照 unset ($existing_mimes['格式']); 樣例添加即可,如果你僅僅只需要允許用戶上傳幾種類型而已,還可以通過下面的更簡潔的方法,代碼添加到主題的functions.php 文件:

  1. //只允許上傳圖片文件 
  2. add_filter('upload_mimes''custom_upload_mimes'); 
  3. function custom_upload_mimes ( $existing_mimes=array() ) { 
  4. unset ($existing_mimes);//禁止上傳任何文件 
  5. $existing_mimes['jpg|jpeg|gif|png']='image/image';//允許用戶上傳jpg,gif,png文件 
  6. return $existing_mimes

如果你還要允許上傳其他格式,重復使用 $existing_mimes['格式']='描述';即可.

限制用戶上傳的文件大小

同樣在主題的 functions.php 文件中,添加下面的代碼:

  1. //限制上傳文件的最大體積 
  2. function max_up_size() { 
  3. return 500*1024; // 500 kb 
  4. add_filter('upload_size_limit''max_up_size');  

上面的例子是限制所有用戶上傳的文件的最大體積為 500 kb (1M =1024*1024)。

注意:主機空間和WordPress本身一般設置了允許上傳的文件的最大體積,所以在這里設置需要考慮到這點.

限制不同用戶角色可上傳的文件類型及大小

其實上面已經給出了限制類型和大小的方法,要根據不同用戶角色來限制,只需要添加角色判斷代碼即可,倡萌舉個綜合的例子:

不同用戶上傳的類型,代碼如下:

  1. function custom_upload_mimes ( $existing_mimes=array() ) { 
  2.  unset ($existing_mimes);//禁止上傳任何文件 
  3.  if( current_user_can( 'publish_posts' ) && !current_user_can( 'publish_pages' ) ) { 
  4.   //允許作者(Author)上傳的類型 
  5.   $existing_mimes['jpg|jpeg|gif|png']='image/image';//允許用戶上傳jpg,gif,png 
  6. 文件 
  7.   $existing_mimes['zip']='application/zip'//允許用戶上傳zip壓縮包 
  8.   $existing_mimes['pdf']='application/pdf'//允許用戶上傳pdf文件 
  9.  }elseif( current_user_can( 'edit_posts' ) && !current_user_can( 'publish_posts' ) ) 
  10.   //允許投稿者(Contributor)上傳的類型 
  11.   $existing_mimes['jpg|jpeg|gif|png']='image/image'
  12.   $existing_mimes['pdf']='application/pdf'
  13.  }else
  14.   //其他用戶角色上傳的類型 
  15.   $existing_mimes['jpg|jpeg|gif|png']='image/image'
  16.  } 
  17.  return $existing_mimes
  18. //不同用戶上傳的大小 
  19. function max_up_size() { 
  20.  if( current_user_can( 'publish_posts' ) && !current_user_can( 'publish_pages' ) ) { 
  21.   return 2048*1024; // 允許作者(Author)上傳 2M 
  22.  }elseif( current_user_can( 'edit_posts' ) && !current_user_can( 'publish_posts' ) ) 
  23.   return 1024*1024; // 允許投稿者(Contributor)上傳 1M 
  24.  }else
  25.   return 500*1024; // 其他用戶角色上傳 500 kb 
  26.  } 
  27. //只對非管理員執行這兩個函數(即:對管理員不生效) 
  28. if( !current_user_can( 'manage_options' ) ) { 
  29.  add_filter('upload_mimes''custom_upload_mimes'); 
  30.  add_filter('upload_size_limit''max_up_size'); 

大家只要靈活使用 if 語句判斷不同的角色賦予不同的權限即可.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美国产日产韩国视频| 欧洲日本亚洲国产区| 久久精品91久久久久久再现| 亚洲尤物视频网| 国产日本欧美在线观看| 国产91ⅴ在线精品免费观看| 中文字幕亚洲一区二区三区| 欧美日韩性视频| 日韩成人激情视频| 国产suv精品一区二区三区88区| 日韩av电影免费观看高清| 亚洲欧美第一页| 尤物99国产成人精品视频| 久久精品精品电影网| 久久99精品久久久久久青青91| 国产精彩精品视频| 日韩美女免费观看| 色婷婷综合久久久久| 欧美日韩aaaa| 日韩视频在线免费| 97在线看福利| 日本亚洲欧美三级| 欧美有码在线观看视频| 97av在线播放| 久久天天躁狠狠躁夜夜爽蜜月| 欧美日韩免费在线观看| 亚洲精品一区在线观看香蕉| 成人性生交xxxxx网站| 日韩av网站电影| 91精品国产自产91精品| 久久精品中文字幕一区| 亚洲精品视频二区| 国产精品自拍偷拍视频| 国产成人在线播放| 欧美乱大交xxxxx另类电影| 国产成人精品视频在线| 亚洲精品在线视频| 亚洲中国色老太| 国产美女久久精品香蕉69| 国外视频精品毛片| 狠狠色噜噜狠狠狠狠97| 亚洲国产另类 国产精品国产免费| 国内成人精品视频| 欧美成人黄色小视频| 欧美激情在线狂野欧美精品| 精品中文字幕视频| 97在线视频精品| 欧美国产一区二区三区| 91色琪琪电影亚洲精品久久| 视频在线观看99| 欧美在线视频观看| 91色p视频在线| 日韩av有码在线| 欧美日产国产成人免费图片| 欧美日韩黄色大片| 亚洲人成在线免费观看| 国产美女精品免费电影| 狠狠色香婷婷久久亚洲精品| 美女撒尿一区二区三区| 亚洲性视频网址| 亚洲精品视频网上网址在线观看| 97色伦亚洲国产| 久久久国产成人精品| 91日韩在线视频| 高清亚洲成在人网站天堂| 在线性视频日韩欧美| 亚洲尤物视频网| 亚洲男人天堂2024| 4438全国亚洲精品在线观看视频| 日韩av综合网站| 91人人爽人人爽人人精88v| 亚洲另类xxxx| 51视频国产精品一区二区| 菠萝蜜影院一区二区免费| 性金发美女69hd大尺寸| 97视频免费在线看| 国产精品一区二区av影院萌芽| 最近中文字幕日韩精品| 国产精品人人做人人爽| 亚洲自拍偷拍视频| 亚洲毛茸茸少妇高潮呻吟| 日韩精品视频在线| 日韩美女av在线| 91久久国产婷婷一区二区| 美女久久久久久久| 日韩欧美在线国产| 久久久久99精品久久久久| 国产精品中文字幕在线| 中文字幕在线国产精品| 欧美性xxxxx极品| 久久久久一本一区二区青青蜜月| 欲色天天网综合久久| 美女视频黄免费的亚洲男人天堂| 国产精品久久久久久久久男| 日韩亚洲欧美中文高清在线| 欧美资源在线观看| 亚洲欧美在线一区| 亚洲人成五月天| 一本色道久久综合亚洲精品小说| 成人激情在线播放| 国产综合久久久久| 国产精品久久一区主播| 国产美女主播一区| 日本久久久久久久| 国产精品国语对白| 最近中文字幕mv在线一区二区三区四区| 日韩综合视频在线观看| 日韩在线国产精品| 亚洲成人性视频| 亚洲加勒比久久88色综合| 欧美片一区二区三区| 亚洲a级在线播放观看| 69av视频在线播放| 亚洲福利视频二区| 中文字幕欧美日韩| 中文字幕日韩欧美在线视频| 91精品国产综合久久香蕉的用户体验| 国产剧情日韩欧美| 久久亚洲综合国产精品99麻豆精品福利| 日本久久91av| 国产一区二中文字幕在线看| 欧美日韩国产一区二区| 久久精品一区中文字幕| 亚洲欧美资源在线| 日本国产精品视频| 国产精品美女无圣光视频| 91成人天堂久久成人| 国产精品自产拍在线观看中文| 国产精品久久久久久久app| 欧美亚洲另类在线| 国产成人精品久久亚洲高清不卡| 欧美成人激情视频免费观看| 亚洲欧美在线免费观看| 成人性生交大片免费观看嘿嘿视频| 欧美风情在线观看| 国产精品欧美风情| 欧美日韩福利视频| 日韩在线视频网| 欧美精品激情blacked18| 欧美激情日韩图片| 午夜美女久久久久爽久久| 成人中文字幕+乱码+中文字幕| 一本色道久久88综合日韩精品| 亚洲人成77777在线观看网| 91在线观看免费观看| 国产成人在线精品| 亚洲伊人一本大道中文字幕| 亚洲综合成人婷婷小说| 懂色av一区二区三区| 国产精品r级在线| 国产免费成人av| 亚洲大胆人体av| 亚洲国产天堂网精品网站| 欧美大片免费观看| 亚洲成人激情视频| 91精品免费久久久久久久久| 欧美裸体xxxx极品少妇软件| 亚洲国产一区二区三区四区| 成人黄色av免费在线观看| 亚洲免费伊人电影在线观看av| 欧美一区视频在线| 国产成人高清激情视频在线观看| 久久免费精品日本久久中文字幕| 亚洲欧洲午夜一线一品|