WordPress主题由于时常使用Google的各种APIs(Fonts字体或Map地图),国内访问时,这些引用严重拖慢了访问速度,这是一个老生常谈的问题。

字体的问题可以通过修改代码或安装插件,去除google fonts或者转为国内的镜像源访问,这很容易做到。Google Map引用一般可以通过后台设置关闭来避免加载。

但是,在某些高级主题中,完全去除外部引用似乎有些困难。我目前用的是ThemeForest 销量第一的AVADA主题,这个主提在后台是可以完全关掉Google Fonts和Google Map。但是,无论如何设置,在页面的Live编辑模式下,总是会有几个外部引用严重拖慢访问速度,粗略估计至少延迟了30几秒,这对于经常用Live模式编辑页面的用户来说非常不友好。控制台截图如下:


AVADA主题Live模式由于网络问题引起的外部引用错误

粗略看一下这几条报错的地址,就应该大概知道问题所在了,国内几大404网站在此,不慢才怪。这些加载项通过后台设置是无法去除的,即使关掉所有相关的Facebook、Google、Twitter选项都不行。在AVADA中,FaceBook和Twitter是可以通过关闭Widget来避免加载,但是很不幸,我需要用到Widget。

解决办法其实不难,直接替换主题或插件里面的相关地址代码,替换成本地文件或去除。不过这个方法有个缺点就是主题升级以后会覆盖文件,需要重新编辑。

八零网络这里有一个稍微好一些的方法——利用Child Theme子主题功能【WP官方非常推荐的一种主题使用方法,AVADA也自带】,在functions.php文件中加入代码,实现功能,且不影响主题升级。我把我的代码放在下面供参考,每个主题不一样,可能方法不尽相同,但是原理一样。【此操作建议有一定编程基础的用户使用,否则易造成不可挽回的损失,请注意!】

在子主题functions.php中加入如下代码:

// 功能:删除Avada主题Live编辑模式的外部资源加载;
// Link: https://www.balingwangluo.com/859.html

function fxpai_remove_googleapis() {
wp_deregister_script( 'google-maps-api' );
wp_deregister_script( 'google-maps-infobox' );
}
add_action( 'wp_enqueue_scripts', 'fxpai_remove_googleapis', 20 );

function fxpai_html_filter($html){
$str_live = strpos($html, 'class="fusion-builder-live');
if($str_live > 0){
$html = str_replace('https://connect.facebook.net/zh_CN/sdk.js#xfbml=1&version=v2.11&appId=', '', $html);
$html = str_replace('', '', $html);
}
return $html;
}

function fxpai_html_filter_begin(){
ob_start('fxpai_html_filter');
}

function fxpai_html_filter_end(){
ob_end_flush();
}

add_action('wp_loaded', 'fxpai_html_filter_begin');
add_action('shutdown', 'fxpai_html_filter_end');

完成后刷新页面,之前的报错全部消失了,Live编辑页面加载速度飞速上升。

正常加载无报错