最近谷歌在国内似乎遭到全面封杀,不仅搜索服务完全无法使用,也殃及到其他服务,其中一个受牵连的事情就是,最近在使用Wordpress时,页面加载异常缓慢,一个简单的页面需要等待很久,使用firebug查看发现,是浏览器一直在等待页面中嵌入的谷歌网络字体(google fonts)链接fonts.googleapis.com,直到超时。这说明fonts.googleapis.com这个网站也被封锁了。

 

我曾经在 网络字体的中文用法 一文中说过,中文是很难使用网络字体的,更别说谷歌提供的英文网络字体了,基本上毫无用处。所以很奇怪为什么中文版的Wordpress里还引用了谷歌字体。

既然谷歌被封杀是无法避免的,那对于我们个人来说就只能让Wordpress禁止使用fonts.googleapis.com这个地址。

让你如何去掉页面中嵌入的fonts.googleapis.com引用链接呢?

 

WordPress系统里有两个地方使用了谷歌字体,一个是主题里,一个是管理员界面。主题里的谷歌字体很好去掉,直接删除就行了。

[root@174 wordpress]# grep "fonts.googleapis.com" . -r
./wp-includes/script-loader.php:                $open_sans_font_url = "//fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,300,400,600&subset=$subsets";
./wp-includes/js/tinymce/plugins/compat3x/css/dialog.css:@import url(//fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,300,400,600&subset=latin-ext,latin);
./wp-content/plugins/tinymce-advanced/mce/importcss/plugin.js:   

但管理员admin界面里的谷歌字体就不是这么容易了,因为我们不能修改wordpress系统文件(修改后的系统文件会在下一次升级时可能被覆盖掉)

wp-includes/script-loader.php的602行(WordPress版本是3.9.1),你能看到下面一段代码:

if ( 'off' !== _x( 'on', 'Open Sans font: on or off' ) ) {
    $subsets = 'latin,latin-ext';

    /* translators: To add an additional Open Sans character subset specific to your language,
     * translate this to 'greek', 'cyrillic' or 'vietnamese'. Do not translate into your own language.
     */
    $subset = _x( 'no-subset', 'Open Sans font: add new subset (greek, cyrillic, vietnamese)' );

    if ( 'cyrillic' == $subset ) {
      $subsets .= ',cyrillic,cyrillic-ext';
    } elseif ( 'greek' == $subset ) {
      $subsets .= ',greek,greek-ext';
    } elseif ( 'vietnamese' == $subset ) {
      $subsets .= ',vietnamese';
    }

    // Hotlink Open Sans, for now
    $open_sans_font_url = "//fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,300,400,600&subset=$subsets";
  }

很明显,只要将

if ( 'off' !== _x( 'on', 'Open Sans font: on or off' ) ) { 

这个判断语句不通过就行了,也就是说只要将位于wp-content\languages\zh_CN.mo目录下里的语言文件zh_CN.mo修改一下就行了。

zh_CN.mo 文件是由 zh_CN.po 文件编译生成的

因此首先打开zh_CN.po,

找到里面的 msgctxt "Open Sans font: on or off"这一行,

将其下面的 msgstr "on" 改成 msgstr "off" ,

保存,

然后将这个修改后的zh_CN.po编译成zh_CN.mo,方法如下:

你可以使用在线编译工具http://tools.konstruktors.com/ (推荐),或者使用Wordpress官方推荐的工具: PoEdit

最后,将编译后的zh_CN.mo替换原zh_CN.mo

 

zh_CN.po 修改前:

#. translators: If there are characters in your language that are not supported
#. * by Open Sans, translate this to 'off'. Do not translate into your own
#. language.
#: wp-includes/script-loader.php:564
msgctxt "Open Sans font: on or off"
msgid "on"
msgstr "on"

zh_CN.po修改后:

#. translators: If there are characters in your language that are not supported
#. * by Open Sans, translate this to 'off'. Do not translate into your own
#. language.
#: wp-includes/script-loader.php:564
msgctxt "Open Sans font: on or off"
msgid "on"
msgstr "off"

如果你觉得这个去掉谷歌字体的方法还是复杂,那么,你可以试一下 disable-google-fonts 这个Wordpress插件。