修复谷歌字体加载失败的问题
今天打开博客发现页面半天都加载不上了,这在换了主机之后还是很少见的。
仔细看看是在等待加载 http://fonts.googleapis.com 这一个链接,应该是谷歌提供储存的一个字体库,然后可以通过css调用想要的字体,英文字体通常不过十K百K,加载起来也能接受,一般中文字体少则五六兆,等你字体加载好,才可以看到体面的页面,这时一首普通的MP3歌曲都下载好了。华而不实的东西。就算耐心的等 googleapis 加载完,它其实引用的是 http://themes.googleusercontent.com 的内容,奈何大天朝墙遍谷歌,万年不得超生。(后来想到这几天是什么日子,便表示了解了。)
先想到替换掉谷歌的,想起七牛有弄过一个专门存放一些常用的静态文件的网站 staticfile.org 但上面木有谷歌字体。(后来奇虎360弄出了替换谷歌字体的服务,见下文 ↓↓↓)
一些国内的公共库CDN:七牛、又拍、新浪SAE、奇虎。所以当时只有 禁用掉谷歌服务器上的 Open Sans 字体了。搜出来在主题的 function.php 里边添加几行但都没有效果。有两个插件叫做 移除WP核心的谷歌字体链接 和 Disable Google Fonts ,未亲测。
其实有找到
$font_url = add_query_arg( $query_args, "$protocol://fonts.googleapis.com/css" );
这一行,想修改或者注释掉都不行。
把
if ( 'off' !== _x( 'on', 'Open Sans font: on or off', 'twentytwelve' ) ) {
这里改成 ‘on’ 改成 ‘off’ 也没有效果。
最后看到下面这堆代码,还是直接放在当前主题的 function.php 里边,我的事自带的 Twenty Twelve。亲测有效。作者说是提取自 Disable Google Fonts 插件的。有兴趣的可以直接用插件来解决。
class Disable_Google_Fonts {
public function __construct() {
add_filter( 'gettext_with_context', array( $this, 'disable_open_sans' ), 888, 4 );
add_action( 'after_setup_theme', array( $this, 'register_theme_fonts_disabler' ), 1 );
}
public function disable_open_sans( $translations, $text, $context, $domain ) {
if ( 'Open Sans font: on or off' == $context && 'on' == $text ) {
$translations = 'off';
}
return $translations;
}
public function disable_lato( $translations, $text, $context, $domain ) {
if ( 'Lato font: on or off' == $context && 'on' == $text ) {
$translations = 'off';
}
return $translations;
}
public function disable_source_sans_pro( $translations, $text, $context, $domain ) {
if ( 'Source Sans Pro font: on or off' == $context && 'on' == $text ) {
$translations = 'off';
}
return $translations;
}
public function disable_bitter( $translations, $text, $context, $domain ) {
if ( 'Bitter font: on or off' == $context && 'on' == $text ) {
$translations = 'off';
}
return $translations;
}
public function register_theme_fonts_disabler() {
$template = get_template();
switch ( $template ) {
case 'twentyfourteen' :
add_filter( 'gettext_with_context', array( $this, 'disable_lato' ), 888, 4 );
break;
case 'twentythirteen' :
add_filter( 'gettext_with_context', array( $this, 'disable_source_sans_pro' ), 888, 4 );
add_filter( 'gettext_with_context', array( $this, 'disable_bitter' ), 888, 4 );
break;
}
}
}
$disable_google_fonts = new Disable_Google_Fonts;
续,两天之后,财大气粗的大数字提供了解决方案,思路还是替换掉谷歌的服务。(原来我文件路径没有找对。。( ╯□╰ )
打开 wp-includes/script-loader.php 文件:
(如果是用自带的主题,比如:twentytwelve,则还要修改 /wp-content/themes/twentytwelve/functions.php)
查找
fonts.googleapis.com
替换成(360自己的服务器)
fonts.useso.com
原微博:
【拯救Google字体,快速优化WordPress打开速度】360网站卫士推出一项字体加速服务, 站长只要修改一行代码,就可以免费使用到由360CDN加速后的字体服务咯。修改方法:把wp-includes/script-loader.php文 件中的fonts.googleapis.com替换为fonts.useso.com。详情参见长微博。
