现在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()就行了。
版权声明:本文为原创文章,版权归 neo 所有。
本文链接:https://idayer.com/wp-head-clear/
本作品采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可。
0 条评论