这篇文章仍然拿上传文件做话题,因为最近用WordPress做交互站比较多,对这块研究得算是比较深了。
WordPress有自带的上传文件最大值限制,这个限制,到后台的“工具”-“站点健康”-“信息”页面可以查到,受制于服务器环境影响,不同的网站限制的大小会有所不同,比如这个网站是40M:
如果要修改这个限制,首先要到服务器环境下的php.ini配置文件中查看相关设置,找到这一行,修改后面的数值。
upload_max_filesize = 80M
post_max_size = 80M
memory_limit = 256M
但是在改完这一行后,你可能会发现网站后台的限制仍然没有改变,不要着急,看一下网站根目录的wp-config.php下有没有这几行
//此处设定不能比php.ini里设定的值大 @ini_set( 'upload_max_size' , '80M' ); @ini_set( 'post_max_size', '80M'); @ini_set( 'memory_limit', '256M' ); |
本文要探讨的自然不只是以上的皮毛知识。除了全局限制要上传的文件大小外,在很多情况下,我们还需要为不同的位置限制不同的文件尺寸,或者对不同的用户限制上传文件的尺寸。
这就需要借助一个钩子upload_size_limit,基本用法:
function brain1981_filter_upload_size_limit( $size ) { //限制500k $size = 1024 * 500; //限制50M $size = 1024 * 1024 * 50; return $size; } add_filter( 'upload_size_limit', 'brain1981_filter_upload_size_limit', 99 ); |
解除限制:
remove_filter( 'upload_size_limit', 'brain1981_filter_upload_size_limit'); |
这个钩子也可以在不同的场景灵活使用,比如给特定的用户做限制:
function brain1981_filter_upload_size_limit( $size ) { if ( !current_user_can( 'edit_posts' ) ){ $size = 1024 * 500; } return $size; } add_filter( 'upload_size_limit', 'brain1981_filter_upload_size_limit', 99 ); |
再比如在Rest API上限制大小:
add_action( 'rest_api_init', function () { add_filter( 'upload_size_limit', 'brain1981_filter_upload_size_limit', 99 ); ... } |
只在网站前台限制:
if(!is_admin()){ add_filter( 'upload_size_limit', 'brain1981_filter_upload_size_limit', 99 ); } |
结合上一篇文章“WordPress开发者自定义附件上传目录的几种方式”,便能做到更立体地管理用户上传的文件了。
本站所有文章均为原创,欢迎转载,请注明文章出处:https://blog.brain1981.com/2732.html。百度和各类采集站皆不可信,搜索请谨慎鉴别。技术类文章一般都有时效性,本人习惯不定期对自己的博文进行修正和更新,因此请访问出处以查看本文的最新版本。
本站记录了近几年的工作中遇到的一些技术问题和解决过程,“作品集”还收录了本人的大部分作品展示。除了本博客外,我们的工作室网站 – JennyStudio,内有更多作品回顾和展示。
您也可以扫描左边的二维码,关注我们的微信公众号,在微信上查看我们的案例。
您也可以扫描左边的二维码,关注我们的微信公众号,在微信上查看我们的案例。