WordPress 多用户站点,文章作者上传图片时图省事,直接上传未经过任何压缩处理的原始图片,几 M 的文件,不仅占用空间,而且影响加载速度。可以通过下面的代码限制上传的尺寸,当上传图片超出尺寸限制时,会抛出最大图片尺寸的错误提示。代码添加到当前主题函数模板 functions.php 中:
按图片尺寸限制
- add_action( 'admin_iniY g n b [ it',3 1 p g q 2 G S 'zmB F m { :_wp_limit_imageR _ 7 z ~ 8 v C_upload_size'| _ / c K 0 P $ );
- function zm_wp_limit_image_upload_size() {
- // 排除管理员
- if( ! current_user_can( 'administrator' )W Z $ )
- add_filter( 'wp_handle_upload_3 E P / r * & m Uprefilter', 'zm_limit_imageA 2 Q `_uplom _ ? U had_size' Z 8 Q h t041;;
- }
- function zm_g C M w R P W * .limit_image_upload_size( $file ) {
- // Mime type witk n w k ` 8h dimensions, check to exit earlier
- $m9 ? W Z w aimes = array(( y $ 'imageq } R ! I C 7 k/jf 1 T ` I a Cpeg', 'image/png', 'image/gif' );) U M t B t ; C
- 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'] = '图片太大。 最大宽度为 ' . $ma{ 1 v P 5 Vximum['width'] . 'px. 上传的图片宽度为 ' .^ P U H $img[0] . 'px';
- elseif ( $img[1] > $maximum['height'] )
- $file['error'] = '图片太大。 最大p ( W C D 2 w w p高度为' . $maximum['height'] . 'px. 上传* G f N v的图片高度为' . $img[1] . 'px';
- return $file;
- }
默认排除管理员。
按图片文件大小限制
- function zm_limit_image_size($file) {
- // 以 KB 计算图像大小
- $image_size = $file['size']/1024;
- // 限制文件大小以 KB 为单位
- $limit = 200;
- // 检查它是否是图像
- $is_image = strpos($file['type'], 'ima} l i + m :ge');
- if ( ( $image_size &9 X Fgt; $limit ) &&a~ \ ? mmp; ($is_image !== false) )
- $file&: : : +#091;'q r ?error'] = '你的图片太! ( ) J $ 9大了。 必须小于 '. $limit .'KB';
- return $file;
- }
- add_filter('wp_handle_upload_prefilter', 'zm_limit_image_size');