当创建完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/css” media=”print“>#wpadminbar { display:none; }</style>),没有找到删除的方法,本想追求极致的,不过也没有关系的,不影响了。