分享  IT  技术
共享精品资源

关于DUX主题的会员中心-发布文章和七牛镜像存储插件冲突的问题

 
天空商城--领取天猫淘宝内部优惠券,每天千款优惠券秒杀!

今天打算接着把 文章投稿 赠送积分也弄上,结果打开会员中心的发布文章,发现文章内容不能填写。

文章发布1

我停掉所有插件,再看就正常了。

文章发布2

然后一个一个开启插件,发现是 七牛镜像存储插件 导致的问题。

先是尝试使用代码版,即在在 WordPress 主题目录下的 functions.php 文件中,加入以下代码:

在 WordPress 主题目录下的 functions.php 文件中,加入以下代码实现替换功能:

//七牛云
if ( !is_admin() ) {
 add_action('wp_loaded','pcsky_ob_start');
 
 function pcsky_ob_start() {
 ob_start('pcsky_qiniu_cdn_replace');
 }
 
 //修改自七牛镜像存储 WordPress 插件
function pcsky_qiniu_cdn_replace($html){ 
$local_host = 'http://www.pcsky.wang'; //博客域名
 $qiniu_host = 'http://img.pcsky.wang'; //七牛域名
 $cdn_exts = 'js|css|png|jpg|jpeg|gif|ico'; //扩展名(使用|分隔)
 $cdn_dirs = 'wp-content|wp-includes'; //目录(使用|分隔)
 
 $cdn_dirs = str_replace('-', '\-', $cdn_dirs);

 if ($cdn_dirs) {
 $regex = '/' . str_replace('/', '\/', $local_host) . '\/((' . $cdn_dirs . ')\/[^\s\?\\\'\"\;\>\<]{1,}.(' . $cdn_exts . '))([\"\\\'\s\?]{1})/';
 $html = preg_replace($regex, $qiniu_host . '/$1$4', $html);
 } else {
 $regex = '/' . str_replace('/', '\/', $local_host) . '\/([^\s\?\\\'\"\;\>\<]{1,}.(' . $cdn_exts . '))([\"\\\'\s\?]{1})/';
 $html = preg_replace($regex, $qiniu_host . '/$1$3', $html);
 }
 return $html;
}
}

发现文章发布还是不行,而且首页的焦点图不能自动替换成七牛地址了,虽然其他的图片都正常。

改下代码:

//七牛云
if ( !is_admin() ) {
 add_action('wp_loaded','pcsky_ob_start');
 
 function pcsky_ob_start() {
 ob_start('pcsky_qiniu_cdn_replace');
 }
 
 //修改自七牛镜像存储 WordPress 插件
function pcsky_qiniu_cdn_replace($html){ 
return str_replace('http://www.pcsky.wang/wp-content/uploads/', 'http://img.pcsky.wang/wp-content/uploads/', $html);
}
}

现在文章发布可以了,虽然首页的焦点图还是不能自动替换成七牛地址。

到此,问题已经找到,是七牛云缓存目录的问题。为了让首页的焦点图自动替换成七牛地址,我删掉了代码,又打开了插件。将目录设置从原来的wp-content|wp-includes改为wp-content|wp-includes\/css,这样一来,文章发布和首页焦点图都正常了。

注:通过一个个目录排除,发现是/wp-includes/js这个目录的问题,只要设置了缓存此目录,文章发布就不好用。

至于为什么是wp-includes\/css而不是wp-includes/css,因为不这样的话网站会打不开,需要增加\来转义,防止正则表达式失效。

七牛插件设置

转载请注明出处。电脑天空 » 关于DUX主题的会员中心-发布文章和七牛镜像存储插件冲突的问题
分享到: 更多 (0)
 

评论 抢沙发

评论前必须登录!