iGoogler 主题使用七牛镜像存储 WordPress 插件导致 JS 加载失败的修正

今天偶然看到,我爱水煮鱼发布了七牛镜像存储 WordPress 插件,欣喜之余,立刻就用上了,可是,用上,问题就来了——JS 加载全失败了。怎么办?弃之不用?这感觉有点不爽,慢慢分析,慢慢调试,终于找到了原因——插件在判断正则上有问题,对于某些特殊写法的php文件没有过滤(例如:all-in-one.js.php)导致。下面是解决方法。(注:本解决方法通过改主题而不是改插件实现,且改动较大,目前暂未发现问题,但改动后该主题JS合并的效果消失,请酌情使用)

1)将 wp-content/themes/iGoogler/js 目录的 all-in-one.js.php 删掉;

2)将 wp-content/themes/iGoogler/js 目录的 comment-ajax.js 更名为 comments-ajax.js;

3)将 wp-content/themes/iGoogler/js 目录的 comment-reply.js 更名为 comments-reply.js;

4)将 wp-content/themes/iGoogler 目录的 all-in-one-js.php 整个替换为以下代码;

<?php

// Common.js
echo '<script type="text/javascript" src="' . get_template_directory_uri() . '/js/common.js"></script>' . "\n";

//
if(is_single()) {
	echo '<script type="text/javascript" src="' . get_template_directory_uri() . '/js/single.js"></script>' . "\n";
	if(comments_open()) {
		echo '<script type="text/javascript" src="' . get_template_directory_uri() . '/js/comments-ajax.js"></script>' . "\n";
		echo '<script type="text/javascript" src="' . get_template_directory_uri() . '/js/comments-reply.js"></script>' . "\n";
	}
}
if(search_words()) {
	echo '<script type="text/javascript" src="' . get_template_directory_uri() . '/js/search-highlight.js"></script>' . "\n";
}
if(igoogler_option('google-plus-one')) {
	echo '<script type="text/javascript" src="' . get_template_directory_uri() . '/js/google-plusone.js"></script>' . "\n";
}
?>

<?php if(search_words()): $arr = preg_split('/[\s,]+/', search_words()); ?>
<script type="text/javascript"><!--//--><![CDATA[//><!--
$(document).ready(function(e) {
	<?php foreach($arr as $words):?>
	    $(".post").highlight("<?php echo $words;?>");
	<?php endforeach; ?>
});
//--><!]]></script>
<?php endif;?>

5)将 wp-content/themes/iGoogler/js 目录的 comments-ajax.js(comment-ajax.js 更名 的)修改一下;

查找

got = js_url.indexOf('js/all-in-one.js'); i++ ; //Modified by me

 

替换为

got = js_url.indexOf('comments-ajax.js'); i++ ; //Modified by me

 

查找

ajax_php_url = js_url.substring(0, got) + 'comments-ajax.php',

 

替换为

ajax_php_url = js_url.replace("js/comments-ajax.js","comments-ajax.php"),

 

查找

var i = 0, got = -1, len = document.getElementsByTagName('script').length;
while ( i <= len && got == -1){
	if("undefined" != typeof(document.getElementsByTagName('script')[i].src) ) {
		var js_url = document.getElementsByTagName('script')[i].src;
		got = js_url.indexOf('comments-ajax.js'); i++ ; //Modified by me
	}
}

 

在后面添加一句

js_url = js_url.replace('nikbobo.qiniudn.com','www.nikbobo.net');

 

其中,nikbobo.qiniudn.com 更改为你的七牛提供的二级域名,www.nikbobo.net 改成你的 WordPress 站点域名。

即替换为

var i = 0, got = -1, len = document.getElementsByTagName('script').length;
while ( i <= len && got == -1){
	if("undefined" != typeof(document.getElementsByTagName('script')[i].src) ) {
		var js_url = document.getElementsByTagName('script')[i].src;
		got = js_url.indexOf('comments-ajax.js'); i++ ; //Modified by me
	}
}
js_url = js_url.replace('nikbobo.qiniudn.com','www.nikbobo.net');

 

好了,大功告成!

此文章是由nikbobo发表在旧博客分类目录的。将固定链接加入收藏夹。

关于 nikbobo

Nikbobo,本名刘永强,记忆空间站长,男,1998 年出生于广东茂名,至今(2022 年)23 岁,目前(2022 年)就读于广州大学华软软件学院,常以“nikbobo”这个网名混迹互联网。如无特殊注明,Nikbobo 在本站发表的文章,遵循 知识共享 署名-非商业性使用-相同方式共享 4.0 国际 许可协议。详情请参阅关于页面的作者介绍。

发表回复

您的电子邮箱地址不会被公开。