清除wordpress里head里面的多余信息

现在wordpress主题在head都会用到wp_head()函数,很多插件更是依赖wp_head()函数,比如一些SEO插件。但是wp_head()也会生成不少冗余的代码,用处是不大的。所以我们要对它进行“大清扫”。

wp_head()相关的代码在哪?

控制wp_head()的代码在wp-includes\default-filter.php里面。

//Actions
add_action( 'wp_head','wp_enqueue_scripts',1);
add_action( 'wp_head', 'feed_links',2);
add_action( 'wp_head', 'feed_links_extra', 3 ); 
...略...

看到这些我们就可以通过remove_action,移除这些设置。

内容介绍

以下的移除代码都是放到functions.php里面

移除版本信息

在head里,可以看到:

<meta name="generator" content="WordPress 3.5.1" />

这里显示的是wordpress的版本信息,这个是可能会被黑客利用,攻击特定版本的漏洞。移除代码:

remove_action( 'wp_head', 'wp_generator' );

移除离线编辑器接口

wordpress会自动添加两行离线编辑器的开放接口:

<link rel="EditURI" type="application/rsd+xml" title="RSD" href="http://example.com/xmlrpc.php?rsd" />   
<link rel="wlwmanifest" type="application/wlwmanifest+xml" href="http://example.com/wp-includes/wlwmanifest.xml" /> 

其中wlwmanifest是针对微软Live Write编辑器的,如果你没有使用,就可以移除它,RSD==Really Simple Discovery,这是 XML-RPC 客户端发现机制需要用到的,如果你不知道这个是什么意思,或者没有集成类似 Flickr 这类服务到你的站点,那么你可以安全的移除它。

remove_action( 'wp_head', 'rsd_link' );   
remove_action( 'wp_head', 'wlwmanifest_link' ); 

移除前后文,第一篇文章,和首页meta信息

remove_action( 'wp_head', 'index_rel_link' ); // Removes the index link   
remove_action( 'wp_head', 'parent_post_rel_link', 10, 0 ); // Removes the prev link   
remove_action( 'wp_head', 'start_post_rel_link', 10, 0 ); // Removes the start link   
remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0 ); // Removes the relational links for the posts adjacent to the current post. 

移除Canonical标记

Canonical的作用如下:

对一组内容完全相同或高度相似的网页,通过使用Canonical标签可以告诉搜索引擎哪个页面为规范的网页,能够规范网址并避免搜索结果中出现多个内容相同或相似的页面,帮助解决重复内容的收录问题,避免网站相同内容网页的重复展示及权重的分散,提升规范网页的权重,优化规范网页的排名。

具体介绍请点击

这一标签对于文章固定链接的更改很有帮助,可以增加对搜索引擎的友好度。但是如果你觉得这个标签对你无用,也可以移除之:

remove_action( 'wp_head', 'rel_canonical' ); 

移除feed链接

remove_action( 'wp_head', 'feed_links', 2 );//文章和评论feed   
remove_action( 'wp_head', 'feed_links_extra', 3 ); //分类等feed 

清理代码汇总

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' ); // 移除版本号

后记

我添加代码后,清理前后文却总是失败,一直存在,搞得我真是郁闷了。

还有针对使用wp_head()之后网页顶部出现空白,可以在之前加上wp_footer()就行了。

0 条评论