WordPress 禁用自动裁剪缩略图片
WordPress 升级 4.4 之后,推出了 srcset 这个图片多屏自适应功能之后,默认会生成四个版本的缩略图,分别为:
- thumbnail:缩略图大小;
- medium:中等大小;
- large:大尺寸;
- medium_large:固定值宽768,高度不限制;
前三种版本大家都很熟悉了,进入 WP后台 —> 设置 —> 媒体,可以看到图片的大小设置:
上面设置的含义:
1)缩略图大小(thumbnail),都设置成了0,表示禁用了缩略图裁剪
2)中等大小(medium),宽度设置成了 768,高度为0(不限),表示以宽度为准,高度自适应调整缩放比例,另保持跟默认的 medium_large_size_w = 768 一致,共用一张图
3)大尺寸(large),都设置成了0,表示禁用了大图裁剪
第四种 medium_large,进入WP数据库,搜索wp_options表medium_large_size_w可以看到。
或者进入WordPress上帝模式,也可以看到 medium_large_size_w 。
WordPress上帝模式:https://你的域名/wp-admin/options.php
例如,米扑博客的后台上帝模式(需要登录到管理后台):
https://blog.mimvp.com/wp-admin/options.php
由以上列表可以看出,如果我们上传一张足够大的图片,就会产生至少四张缩略图,为什么这里说是至少?
因为适应不同大小的屏幕,有时要根据图片比例不同而生成不同的尺寸。
但是,上传一张图片要生成多个不同尺寸的图片,这是何等的浪费空间!
WordPress 禁用自动裁剪缩略图片
为了禁用自动裁剪多张缩略图片,占用大量磁盘空间,以及迁移维护成本,需要禁用掉自动裁剪缩略图片功能。
通常我们只需在多媒体设置页面将所有尺寸设置为0,就能禁用缩略图裁剪:
但是上图这种方法,无法禁用 medium_large 版本,其数据写入了数据库,解决办法有三种:
方法1:
进入上帝模式,修改 medium_large_size_w 为 0,然后保存,会自动写入到数据库里
上帝模式:https://你的域名/wp-admin/options.php
方法2:
登录数据库 搜索wp_options表medium_large_size_w,或在phpMyAdmin中搜索medium_large_size_w将值修改为0,
select * from wp_options where option_name = 'medium_large_size_w';
MariaDB [mimvp-blog]> select * from wp_options where option_name = 'medium_large_size_w'; +-----------------+---------------------+--------------+----------+ | option_id | option_name | option_value | autoload | +-----------------+---------------------+--------------+----------+ | 246673192502538 | medium_large_size_w | 768 | yes | +-----------------+---------------------+--------------+----------+
通过MySQl 语句修改 medium_large_size_w = 0
update wp_options set option_value = 0 where option_name = 'medium_large_size_w';
方法3:
在自己的WP主题文件下的 functons.php 文件中,加入以下代码来禁用:
function bzg_filter_image_sizes( $sizes ) { unset( $sizes['medium_large']); return $sizes; } add_filter( 'intermediate_image_sizes_advanced', 'bzg_filter_image_sizes' );
网上的方法
// 彻底禁止WordPress缩略图 add_filter( 'add_image_size', create_function( '', 'return 1;' ) );
网上的方法,可以解决缩略图、中等大小、大尺寸,但没法解决 medium_large_size_w 为 0,其解决方法见上面三种之一
在 WordPress 里面禁用任何函数的方法该如何做呢?
比如,你知道 WordPress 里面有个自带的功能函数叫 create_fun_core,你不想直接在 WordPress 核心文件中修改,防止升级后失效,那么用 add_filter 来解决是最好不过了!
// 禁用任意一个核心 create_fun_core 函数 add_filter( 'create_fun_core', create_function( '', 'return 1;' ) );
其实应该还有一个更简单的代码,原理都是利用 WordPress 的过滤器功能:
// 禁用 create_fun_core 函数 add_filter( 'create_fun_core', '__return_false' );
让这函数直接返回,不再继续往下执行。
参考推荐:
版权所有: 本文系米扑博客原创、转载、摘录,或修订后发表,最后更新于 2019-01-22 05:17:40
侵权处理: 本个人博客,不盈利,若侵犯了您的作品权,请联系博主删除,莫恶意,索钱财,感谢!
好文章,非常详细,博主辛苦了