使用 Begin 主题,同一片文章有些图片就不会弹窗,而是新窗口打开这个图。
然后就特别的郁闷,折腾了一个小时。搞定,原因是图片名称未能匹配到。
例如下面这个图片链接就可以正常弹窗
https://cdn.fox-studio.net/wp-content/uploads/2017/09/20170915202453.jpg
而下面这一个地址就不能,点击后新窗口打开
https://cdn.fox-studio.net/wp-content/uploads/2019/08/WX20190831-184321@2x.png
对比发现图片文件名中多了一个 @
符号,这是因为我使用 Mac 系统中 Squash 软件对图片进行了压缩,默认生成的图片会被重命名。
而我之前,当然不会注意到这个问题会导致弹窗失败。
修改方法如下:
找到主题目录下这个文件:
../themes/begin/inc/add-class.php
有一条正则匹配的语句
$pattern = "/<a(.*?)href=('|\")([A-Za-z0-9\/_\.\~\:-]*?)(\.bmp|\.gif|\.jpg|\.jpeg|\.png)('|\")([^\>]*?)>/i";
其中的 [A-Za-z0-9\/_\.\~\@\:-]*? 内容就是匹配图片链接的名称部分。
我们略作修改,将 「@」 符号加入其中。变成 [A-Za-z0-9\/_\.\~\@\:-]*?
。注意 @
符号前还有一个\
符号,表示转义的意思,应该不加也没问题。
$pattern = "/<a(.*?)href=('|\")([A-Za-z0-9\/_\.\~\@\:-]*?)(\.bmp|\.gif|\.jpg|\.jpeg|\.png)('|\")([^\>]*?)>/i";
最后保存覆盖。清除缓存后 (如果你网站做了 php 文件的缓存),刷新页面,搞定。
评论