七牛镜像存储WordPress插件V1.3图片水印设置无效原因分析
七牛镜像存储wordPress插件升级到V1.3.1,支持图片水印设置。但是小站升级插件后,按照插件说明进行了设置,水印无效。几经波折,我终于明白了小站水印设置无效的原因。
1.首先,我们来观摩一下水煮鱼大神的插件与水印相关的源代码。
在wpjam-thumbnail.php中,我们可以看到函数wpjam_get_qiniu_watermaker(),显示它是负责依照我们的水印设置来生成水印的。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
function wpjam_get_qiniu_watermaker(){ $watermark = wpjam_qiniutek_get_setting('watermark'); $watermark = str_replace(array('+','/'),array('-','_'),base64_encode($watermark)); $dissolve = wpjam_qiniutek_get_setting('dissolve'); $dissolve = ($dissolve)?$dissolve:'100'; $gravity = wpjam_qiniutek_get_setting('gravity'); $gravity = ($gravity)?$gravity:'SouthEast'; $dx = wpjam_qiniutek_get_setting('dx'); $dx = ($dx)?$dx:'10'; $dy = wpjam_qiniutek_get_setting('dy'); $dy = ($dy)?$dy:'10'; $watermark = 'watermark/1/image/'.$watermark.'/dissolve/'.$dissolve.'/gravity/'.$gravity.'/dx/'.$dx.'/dy/'.$dy; return $watermark; } |
那么这个水印如何与我们的图片结合呢?经过查阅,wpjam_get_qiniu_watermaker()在wpjam-qiniutek.php的wpjam_qiniutek_replace_remote_image()中被调用,追根溯源,我发现必须运行下面的代码水印才会生效。
1 2 3 4 5 6 7 8 9 |
if(!is_admin()){ //设置了“自动将远程图片镜像到七牛” 并且支持固定链接 if(wpjam_qiniutek_get_setting('remote') && get_option('permalink_structure')){ add_filter('the_content', 'wpjam_qiniutek_content',1); } add_filter('script_loader_src', 'wpjam_qiniutek_loader_src',10,2); add_filter('style_loader_src', 'wpjam_qiniutek_loader_src',10,2); } |
2.在对源代码进行初步学习后,我开始猜测小站不显示水印的原因:
插件默认状况下是选中“自动将远程图片镜像到七牛”的,但是因为保持此默认设置时,小站的图片就显示不正常,所以我手动关闭了该选项。于是第1点中提到的水印代码小站根本没有运行,所以小站无法正常显示水印。
3.那小站怎样才可以正常显示水印呢?
显然,要显示水印必须勾选“自动将远程图片镜像到七牛”,但如何才可以保证勾选该选项并且还能保证图片显示正常呢?水煮鱼大神给出了明确的提示:A.博客支持固定链接;B.静态文件域名与博客域名一致。
小站满足第1点,不满足第2点。因为小站安装在子目录wp下,也就是说小站的域名是https://livezingy.com,而静态文件域名是https://livezingy.com/wp。因此,要验证我的猜想,就必须先将博客从子目录转移至根目录。

4.将博客从子目录转移至根目录
转移方法我首先在本地主机中进行了演练,演练OK后开始在小站中实战,幸好转移过程非常顺利。
转移完成后,我设置了远程图片,刷新网页,图片正常显示,水印也正常显示,oh Yeah!
博主的自言自语:我自认为这篇文章应该可以帮助到不少和我一样的新人,所以我想让它上本博客的头条!
博主的自言自语:再评论一次,应该就可以上侧边栏了……