如何限制WordPress用户上传图片的大小尺寸(超过尺寸不让上传)

如果我们的WordPress网站是自己管理的,后台上传图片的尺寸是可以控制的,我们自己也不可能乱上传附件。但是,如果我们的WordPress网站是开放有用户投稿提交资料的,那我们需要控制上传图片的尺寸或者设置限制上传文件的大小,否则我们的服务器会造成附件拥堵,占用很大的资源。

这里,我们可以用几个代码实现。

1、限制尺寸

        add_action( 'admin_init', 'zm_wp_limit_image_upload_size' );

     

        function zm_wp_limit_image_upload_size() {

        	// 排除管理员

        	if( ! current_user_can( 'administrator' ) )

        		add_filter( 'wp_handle_upload_prefilter', 'zm_limit_image_upload_size' ); 

        }

     

        function zm_limit_image_upload_size( $file ) {

        	// Mime type with dimensions, check to exit earlier

        	$mimes = array( 'image/jpeg', 'image/png', 'image/gif' );

     

        	if( !in_array( $file['type'], $mimes ) )

        		return $file;

     

        	$img = getimagesize( $file['tmp_name'] );

        	$maximum = array( 'width' => 500, 'height' => 700 );

     

        	if ( $img[0] > $maximum['width'] )

        		$file['error'] = '图片太大。 最大宽度为 ' . $maximum['width'] . 'px. 上传的图片宽度为 ' . $img[0] . 'px';

     

        	elseif ( $img[1] > $maximum['height'] )

        		$file['error'] = '图片太大。 最大高度为' . $maximum['height'] . 'px. 上传的图片高度为' . $img[1] . 'px';

        	return $file;

        }

2、限制大小

        function zm_limit_image_size($file) {

        	// 以 KB 计算图像大小

        	$image_size = $file['size']/1024;

     

        	// 限制文件大小以 KB 为单位

        	$limit = 200;

     

        	// 检查它是否是图像

        	$is_image = strpos($file['type'], 'image');

     

        	if ( ( $image_size > $limit ) && ($is_image !== false) )

        		$file['error'] = '你的图片太大了。 必须小于 '. $limit .'KB';

     

        	return $file;

     

        }

        add_filter('wp_handle_upload_prefilter', 'zm_limit_image_size');

这里,根据我们的需要添加到 Functions.php 中。

投票 post
© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享