这段日子访问 Google 服务真不是一般的困难。除了 Gmail 等重要服务都不能访问之外,还有一个附带影响就是,每次打开 WordPress 后台都会卡在加载 Google Open Sans Fonts 那个地方。
1. 背景¶
WordPress 从 3.8 的时候(不十分确定)引入了 Google Open Sans Fonts,并从 Google 的服务器上加载该资源。这么做的一个明显好处是可以享用 Google 在解决跨平台、跨语言的网页显示上的研究成果,也减小了 WordPress 安装包(不用带字体了)。当然,这也引起了不少人的抵制,原因如下:
- 隐私和安全(Google 会通过你对此字体文件的访问而知道你都看了哪些网页)
- 在本地环境下做开发或调试之类的会有障碍(没有或者有限的网络访问条件)
- Google 服务器的可用性(某些国家屏蔽了 Google 服务器)
- 语言支持(这些字体支持的字符很有限)
- 性能(其实 Google 服务器的性能还是没话说的,只要能顺畅访问到)
对于上面的第一条原因,恐怕很多人都无所谓。因为一是不用 Google 相关服务(比如 Google 广告)的网站很少,二是还有不少网站为了减小自身服务器的压力而使用 Google 提供的 ajax 文件(比如 Use Google Library 插件提供的;所以我顺便把 Use Google Libraries 也禁用了)。
既然这样,解决问题的途径有两个:一是彻底禁用 WordPress 内置以及主题中引用的 Google Fonts;二是将 Google Fonts 用别的 CDN 上的文件替代。
2. 彻底的处理¶
我选择了彻底禁用 WordPress 内置以及主题中引用的 Google Fonts。因为上面提到的针对 Google Fonts 的抵制原因的第一条,鉴于我的考虑,如果 Google 不可信,那么别的公司可能更加不可信。所以干脆什么都不用,只用传统的字体吧。
幸好处理方法别人早就提供了,有两个插件, Disable Google Fonts 或者 Remove Open Sans font Link from WP core 可以达到目的。根据我查看插件源文件的初步认识,前者可能比后者更可靠些,虽然其代码稍多些。因为后者是用一个空字符串来替换 Google Fonts 的链接,略显粗暴。
当然,把插件里那个 php 文件中的内容移植到所用主题的 functions.php 文件中一样可以达到目的。只不过这样一来,如果插件更新了就不会得到提示。
3. 温柔的处理 – 换个 CDN¶
如果还是希望使用 Google Fonts,那就可以使用别的公司缓存的 Google 字体,比如 360 网站卫士就提供的有这样的 前端公共库 useso 。
这个可以使用 DeveWork 提供的方法。摘录如下。
将下面的代码保存为 php 文件就是一个很好的插件了:
<?php
/*
Plugin Name: DW Replace Open Sans
Plugin URI: http://devework.com/replace-open-sans.html
Description: 将WordPress 后台中的open-sans字体加载源从Google Fonts替换为360的CDN加载源。
Author: Jeff
Author URI: http://devework.com/
Version: 1.0
@Thanks: https://gist.github.com/MikeNGarrett/8462474#
*/
function devework_replace_open_sans() {
wp_deregister_style('open-sans');
wp_register_style( 'open-sans', '//fonts.useso.com/css?family=Open+Sans:300italic,400italic,600italic,300,400,600' );
wp_enqueue_style( 'open-sans');
}
//前台加载,看需要注释之;
add_action( 'wp_enqueue_scripts', 'devework_replace_open_sans' );
//后台加载,应该都需要的了
add_action('admin_enqueue_scripts', 'devework_replace_open_sans');
?>
也可以直接将上面的代码移植到所用主题的 functions.php 文件中。
而且其中使用的字体源(蓝色标记)也可以改成别的,甚至是字体也可以自定义。©
本文发表于水景一页。永久链接:<https://cnzhx.net/blog/disable-google-fonts-in-wordpress/>。转载请保留此信息及相应链接。
自己改的主题 没有以上问题
在 WordPress 后台也没有这个问题吗?好像因为后台设置的 CSS 里要用到 Google Fonts 才把这个加到 WP 内核中了。你登录后台后看页面源代码有没有 fonts.googleapix.com 的内容。
后台我也去手动修改了 禁用了Google的字体 不然太慢了 受不了
手动修改的麻烦之处就是每次升级都要修改一次,现在 WP 更新那么频繁,受不鸟。而且可能会忘记的吧,我的记性奇差。
直接在wp-include 里头去把地址给改掉了。。
这样当然也可以了,就是太暴力了 :D
现在第一条变成了:隐私和安全(360 会通过你对此字体文件的访问而知道你都看了哪些网页)。
哈哈,估计看了第一部分的都不会再用360的源了吧?