从 WordPress 3.9.x 升级至 4.x 之后,访问首页源代码,发现头部无缘无故多了一大堆代码,可以判断肯定是 WordPress 自带的,因为之前的旧版本并没有。从“window._wpemojiSettings”字眼中可以看出这应该是关于表情的,我的小站不用表情,即使用也不会用 WP 系统自带的,所以这堆代码对我而言毫无用处,放在首页头部还会影响我的网页加载速度,绝对要去除!


		
		

  方法很简单,在 functions.php 文件中植入以下代码:

/**移除window._wpemojiSettings**/
remove_action( 'admin_print_scripts', 'print_emoji_detection_script');
remove_action( 'admin_print_styles', 'print_emoji_styles');
remove_action( 'wp_head', 'print_emoji_detection_script', 7);
remove_action( 'wp_print_styles', 'print_emoji_styles');
remove_action( 'embed_head','print_emoji_detection_script');
remove_filter( 'the_content_feed', 'wp_staticize_emoji');
remove_filter( 'comment_text_rss', 'wp_staticize_emoji');
remove_filter( 'wp_mail', 'wp_staticize_emoji_for_email');

  这样一来,再打开首页源代码,发现以上的 window._wpemojiSettings 表情代码都已经清空了,但是这句话还在:

  这是一句 DNS 预读取代码,s.w.org 是 WordPress 官网的,关于此项请移步至:DNS Prefetch 预读取到底是什么意思?如何正确使用?

  同样的,在 functions.php 文件中加入以下代码即可去除 DNS Prefetch:

remove_action( 'wp_head', 'wp_resource_hints', 2 );

  听说下面的代码兼容性更好,反正我用上面的也搞定了。

function remove_dns_prefetch( $hints, $relation_type ) {
if ( 'dns-prefetch' === $relation_type ) {
return array_diff( wp_dependencies_unique_hosts(), $hints );
}
return $hints;
}
add_filter( 'wp_resource_hints', 'remove_dns_prefetch', 10, 2 );