智能摘要 AI
本文介绍了七牛云存储插件的功能及其优化过程。该插件支持自动重命名、自动上传文件等实用功能,尤其自定义图片规则方便处理图片并添加水印,但不支持GIF格式。作者通过修改插件中的`image_display_processing`函数,解决了GIF文件无法适用图片规则的问题。具体方法是利用正则表达式匹配图片URL,并判断文件后缀,若为GIF则跳过处理,确保图片正常加载。最终实现了GIF和PNG使用不同规则的效果,提升了图片压缩和水印添加的灵活性。
七牛云存储是由老部落制作的一款对接七牛云对象存储的插件,它拥有自动重命名、自动上传文件等功能,可以算是业界良心插件。我最喜欢它的自定义图片规则功能,开启此项后方便我们压缩处理图片,在七牛云那里也可以设置水印等等,非常的方便,不过美中不足的是:由于GIF图片无法适用于图片规则,需要将其排除,否则图片将会无法加载。
为了功能的完整性,我决定花费些时间来处理它的替换规则。
寻找替换函数
我们下载WP七牛云存储插件,将其解压,并搜索关键词:匹配正则,来到index.php文件的385行。
找到这个函数位置也是比较方便,用notepad搜索就行,以往的插件修改都是用这个编辑器完成
函数名称为:image_display_processing,并带有一个参数
| 函数名 | 参数 |
| image_display_processing | $content |
判断文件后缀
上文我们说到,我们需要排除GIF后缀名,所以我们这里需要得到每个与正则相匹配的URL,并且取出后缀名,判断是否是GIF,如果是,则完成替换,返回替换后的内容;如果不是,则返回原内容。
有了这个思路,我们就可以开始编写代码,由于学艺不精,所以代码可能有点难看:
PHP代码
public function image_display_processing($content) {
if ( isset($this->options['opt']['img_process'])
&& $this->options['opt']['img_process']['switch'] ) {
$media_url = get_option('upload_url_path');
$pattern = '#<img[\s\S]*?src\s*=\s*[\"|\'](.*?)[\"|\'][\s\S]*?>#ims';
// img匹配正则
$content = preg_replace_callback(
$pattern,
function($matches) use ($media_url) {
if (strpos($matches[1], $media_url) === false) {
return $matches[0];
} else {
$file = substr(strrchr($matches[1],'.'),1);
if($file!='gif')
return str_replace(
$matches[1],
$matches[1] . $this->image_display_default_tab . $this->options['opt']['img_process']['style_value'],
$matches[0]); else
return $matches[0];
}
}
,
$content);
}
return $content;
}我们通过使用 substr(strrchr($matches[1],'.'),1) 来获取URL后面跟着的后缀名,再通过判断来执行替换语句,即可实现适应GIF的效果。
PS:代码的排版可能导致其可读性变差,所以在文章下方,我会将附上文件。
效果展示
成功实现了GIF和PNG使用不同的图片规则,达到压缩图片和添加水印的效果,如果想要实现本站GIF图片点击播放的效果,可以选择阅览以下文章,通过添加GIF Player实现此效果。



下载链接:https://ersanwu.lanzoui.com/ixXDKwvaffi
密码:7apb
建议备份原文件后再开启修改过后的插件