WordPress自定义上传文件最大容量(size)的几种方法

这篇文章仍然拿上传文件做话题,因为最近用WordPress做交互站比较多,对这块研究得算是比较深了。

WordPress有自带的上传文件最大值限制,这个限制,到后台的“工具”-“站点健康”-“信息”页面可以查到,受制于服务器环境影响,不同的网站限制的大小会有所不同,比如这个网站是40M:
WordPress上传文件最大容量size

如果要修改这个限制,首先要到服务器环境下的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 本站记录了近几年的工作中遇到的一些技术问题和解决过程,“作品集”还收录了本人的大部分作品展示。除了本博客外,我们的工作室网站 – JennyStudio,内有更多作品回顾和展示。
您也可以扫描左边的二维码,关注我们的微信公众号,在微信上查看我们的案例。

发表回复

您的电子邮箱地址不会被公开。