当创建完wordpress的header.php的时候,我们说过,头部是不能少<?php wp_head(); ?>,在“关于创建wordpress的header.php模板需注意的几个方面”文中有说明。但是加了这个,我们发现头部无缘无故就默认加载了很多东西,代码非常多,包括WordPress版本,前后文、第一篇文章、主页meta信息等各种冗余代码。而这些东西我是不需要的,也没有什么意义。更重要是对网站性能有很多的影响我就必须清楚掉这些。那么怎么样去清楚掉这些呢?以下是我所使用的代码

<?php
	//删除wp_head()多余的代码
	remove_action( 'wp_head', 'feed_links_extra', 3 ); //去除评论feed
	remove_action( 'wp_head', 'feed_links', 2 ); //去除文章feed
	remove_action( 'wp_head', 'rsd_link' ); //针对Blog的远程离线编辑器接口
	remove_action( 'wp_head', 'wlwmanifest_link' ); //Windows Live Writer接口
	remove_action( 'wp_head', 'index_rel_link' ); //移除当前页面的索引
	remove_action( 'wp_head', 'parent_post_rel_link', 10, 0 ); //移除后面文章的url
	remove_action( 'wp_head', 'start_post_rel_link', 10, 0 ); //移除最开始文章的url
	remove_action( 'wp_head', 'wp_shortlink_wp_head', 10, 0 );//自动生成的短链接
	remove_action( 'wp_head', 'adjacent_posts_rel_link', 10, 0 ); ///移除相邻文章的url
	remove_action( 'wp_head', 'wp_generator' ); // 移除版本号

	remove_action( 'wp_head', 'wp_print_styles', 8 );   
	remove_action( 'wp_head', 'wp_print_head_scripts', 9 );   
	//remove_action( 'wp_head', 'rel_canonical' );    
	remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0 ); 
	
	remove_action( 'wp_head', 'print_emoji_detection_script',7 ); 
	remove_action( 'wp_head', 'rest_output_link_wp_head', 10 );
	remove_action( 'wp_head', 'wp_oembed_add_discovery_links', 10 );
	add_action('get_header', 'remove_admin_login_header'); //移除wordpress顶部工具栏css样式media="screen"
	function remove_admin_login_header() { 
		remove_action('wp_head','_admin_bar_bump_cb'); 
	}
	//移除头部多余.recentcomments样式
	function Fanly_remove_recentcomments_style() {
	    global $wp_widget_factory;
	    remove_action( 'wp_head', array( $wp_widget_factory->widgets['WP_Widget_Recent_Comments'], 'recent_comments_style' ) );
	}
	add_action( 'widgets_init', 'Fanly_remove_recentcomments_style' );
?>

把以上代码加入到functions.php就可以了。

关于以上的方法是在那个文件呢?在 wp-includes 文件夹下的 default-filters.php 文件中可以找到。。

下面就简单说一下没有注释的部分是删除那些内容。

1、remove_action( ‘wp_head’, ‘wp_print_styles’, 8 );

应该删除一些样式的,看字面像是打印之类的样式。经过测试,发现是删除如下代码的

<style type="text/css">
img.wp-smiley,
img.emoji {
	display: inline !important;
	border: none !important;
	box-shadow: none !important;
	height: 1em !important;
	width: 1em !important;
	margin: 0 .07em !important;
	vertical-align: -0.1em !important;
	background: none !important;
	padding: 0 !important;
}
</style>
<link rel='stylesheet' id='dashicons-css'  href='http://121.41.102.40/wp-includes/css/dashicons.min.css?ver=4.5.2' type='text/css' media='all' />
<link rel='stylesheet' id='admin-bar-css'  href='http://121.41.102.40/wp-includes/css/admin-bar.min.css?ver=4.5.2' type='text/css' media='all' />
<link rel='stylesheet' id='twentyfourteen-lato-css'  href='https://fonts.useso.com/css?family=Lato%3A300%2C400%2C700%2C900%2C300italic%2C400italic%2C700italic&subset=latin%2Clatin-ext' type='text/css' media='all' />
<link rel='stylesheet' id='genericons-css'  href='http://121.41.102.40/wp-content/themes/my/genericons/genericons.css?ver=3.0.3' type='text/css' media='all' />
<link rel='stylesheet' id='twentyfourteen-style-css'  href='http://121.41.102.40/wp-content/themes/my/style.css?ver=4.5.2' type='text/css' media='all' />
<!--[if lt IE 9]>
<link rel='stylesheet' id='twentyfourteen-ie-css'  href='http://121.41.102.40/wp-content/themes/my/css/ie.css?ver=20131205' type='text/css' media='all' />
<![endif]-->
2、remove_action( ‘wp_head’, ‘wp_print_head_scripts’, 9 );

顾名思义,应该是删除跟第一条相关的js脚本代码,如下代码

<script type='text/javascript' src='/wp-includes/js/jquery/jquery.js?ver=1.12.3'></script>
<script type='text/javascript' src='wp-includes/js/jquery/jquery-migrate.min.js?ver=1.4.0'></script>
3、remove_action( ‘wp_head’, ‘rel_canonical’ );

这个是移除Canonical标记的(如<link rel=”canonical” href=”当前文章的连接地址” />),这对于文章固定链接的更改很有帮助,可以增加对搜索引擎的友好度,所以不必删除。

4、remove_action( ‘wp_head’, ‘adjacent_posts_rel_link_wp_head’, 10, 0 );

发现是删除上一篇文章固链的link标签的,他删除的代码是如下:

<link rel=’prev’ title=’一篇文章的标题’ href=’http://www.xxx.com/374.html’ />

5、remove_action( ‘wp_head’, ‘print_emoji_detection_script’,7 );

这一条,发现是删除如下代码的:

<link rel=”alternate” type=”application/json+oembed” />

<link rel=”alternate” type=”text/xml+oembed”/>

6、remove_action( ‘wp_head’, ‘rest_output_link_wp_head’, 10 );

发现是删除如下代码的:

<link rel=’https://api.w.org/’ href=’http://www.xx.com/wp-json/’ />

7、remove_action( ‘wp_head’, ‘wp_oembed_add_discovery_links’, 10 );

发现是删除如下代码的:

window._wpemojiSettings =….,这段很长js代码的

8、add_action(‘get_header’, ‘remove_admin_login_header’); 

移除wordpress顶部工具栏css样式的,如下样式代码

<style type="text/css" media="screen">
html { margin-top: 32px !important; }
* html body { margin-top: 32px !important; }
@media screen and ( max-width: 782px ) {
html { margin-top: 46px !important; }
* html body { margin-top: 46px !important; }
}
</style>
9、function Fanly_remove_recentcomments_style()函数,是移除头部多余.recentcomments样式


最后发现有一个小样式代码(<style type=”text/cssmedia=”print“>#wpadminbar { display:none; }</style>),没有找到删除的方法,本想追求极致的,不过也没有关系的,不影响了。