编写PHP脚本清除WordPress头部冗余代码的方法讲解


Posted in PHP onMarch 01, 2016

wordpress头部的代码非常多,包括WordPress版本,前后文、第一篇文章、主页meta信息等各种冗余代码,这些对博主来说是没有意义的,也对网站的安全有一定的影响,也一度不知道这些代码是有什么作用、怎么来的和怎么删除。

wordpress头部清理代码如下
将以下代码插入到你functions.php的文件头部,除WordPress头部大量冗余信息

<?php 
//remove_action( 'wp_head', 'wp_enqueue_scripts', 1 ); 
remove_action( 'wp_head', 'feed_links', 2 ); 
remove_action( 'wp_head', 'feed_links_extra', 3 ); 
remove_action( 'wp_head', 'rsd_link' ); 
remove_action( 'wp_head', 'wlwmanifest_link' ); 
remove_action( 'wp_head', 'index_rel_link' ); 
remove_action( 'wp_head', 'parent_post_rel_link', 10, 0 ); 
remove_action( 'wp_head', 'start_post_rel_link', 10, 0 ); 
remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0 ); 
//remove_action( 'wp_head', 'locale_stylesheet' ); 
remove_action( 'publish_future_post', 'check_and_publish_future_post', 10, 1 ); 
//remove_action( 'wp_head', 'noindex', 1 ); 
//remove_action( 'wp_head', 'wp_print_styles', 8 ); 
//remove_action( 'wp_head', 'wp_print_head_scripts', 9 ); 
remove_action( 'wp_head', 'wp_generator' ); 
//remove_action( 'wp_head', 'rel_canonical' ); 
remove_action( 'wp_footer', 'wp_print_footer_scripts' ); 
remove_action( 'wp_head', 'wp_shortlink_wp_head', 10, 0 ); 
remove_action( 'template_redirect', 'wp_shortlink_header', 11, 0 );
add_action('widgets_init', 'my_remove_recent_comments_style'); 
function my_remove_recent_comments_style() { 
 global $wp_widget_factory; 
 remove_action('wp_head', array($wp_widget_factory->widgets['WP_Widget_Recent_Comments'], 'recent_comments_style')); 
} 
?>

各函数解释:

wp_head函数

wp_head() 是wordpress的一个非常重要的函数,基本上所有的主题在header.php这个文件里都会使用到这个函数,而且很多插件为了在header上加 点东西也会用到wp_head(),比如SEO的相关插件。但是,在wp_head()出现的这个位置,会增加很多并不常用的代码。可以通过 remove_action移除这些代码。

remove_action函数

函数原型:

remove_action( $tag, $function_to_add, $priority, $accepted_args );

该函数移除一个附属于指定动作hook的函数。该方法可用来移除附属于特定动作hook的默认函数,并可能用其它函数取而代之。参见remove_filter(), add_action() and add_filter()。
重要:添加hook时的$function_to_remove 和$priority参数要能够相匹配,这样才可以移除hook。该原则也适用于过滤器和动作。移除失败时不进行警告提示。
参数

  • $tag(字符串)(必需)将要被删除的函数所连接到的动作hook。默认值:None
  • $function_to_remove(回调)(必需) 将要被删除函数的名称默认值:None
  • $priority(整数)(可选)函数优先级(在函数最初连接时定义)默认值:10
  • $accepted_args(整数)(必需)函数所接受参数的数量。默认值:1

返回值

  • (布尔值)函数是否被移除。
  • Ttue 函数被成功移除
  • False函数未被移除

移除WordPress版本

在head区域,可以看到如下代码:

<meta name="generator" content="WordPress 3.1.2" />
这是隐性显示的WordPress版本信息,默认添加。可以被黑客利用,攻击特定版本的WordPress漏洞。清除代码:
remove_action( 'wp_head', 'wp_generator' );

移除离线编辑器开放接口

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

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

 
其 中RSD是一个广义的接口,wlwmanifest是针对微软Live Writer编辑器的。如果你不需要离线编辑,可移除之。即便你需要使用离线编辑器,大部分时候也不需要这两行代码。Live Writer自己知道它们。保留这两行代码可能会留有安全隐患。清除代码:

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

移除前后文、第一篇文章、主页meta信息

WordPress把前后文、第一篇文章和主页链接全放在meta中。我认为于SEO帮助不大,反使得头部信息巨大。移除代码:

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标记

09年2月份,Google,Yahoo及Microsoft三大搜索引擎联合推出了一个旨在减少重复内容困扰的方法,这对于广大站长来说不啻是个好事情,不用再担心因为网站上有重复的内容而影响到网站页面的权重了。
造 成重复内容的原因有很多,最常见的便是多个url地址指向了同一个页面,比如:wordpress平台下的一篇日志页面,包括了文章及评论内容。每个评论 都可以有个固定的链接地址,,如果有多个评论的话,则每条评论的链接都类似于上述格式,只是commentID号有所不同,这些链接其实都是指向同一篇文 章的。蜘蛛来爬时,便会依次爬行一遍,这篇文章下如有10条评论,则爬了10次相同的页面文章,相当于做了多次重复的工作,严重影响了抓取的效率,及耗费 了带宽。
重复内容造成的结果必然是蜘蛛不愿意来爬,不同的url指向同一个页面,也会影响到该页面的权重。通过canonical标签,能有效的避免这类问题。
需要注意两点:

  • 允许指向不同的子域名,不允许指向其他域名
  • canonical属性可以被传递

即A页面声明B为权威链接,B声明C为权威网页,那么C就是A和B共同的首选权威版本

如果你的WP版本在2.9之前,需要通过插件(上面已经提到)或者手工 Hack 主题的 header.php 文件来使得博客支持。

<link rel="canonical" href="<?php get_permalink()?>" />

在 WordPress 2.9 发布之后,WordPress 已经默认支持这一标签了,我们无需做任何动作,主题就支持这一标签。这对于文章固定链接的更改很有帮助,可以增加对搜索引擎的友好度。但是如果你觉得这个标签对你无用,也可以移除之:

remove_action( 'wp_head', 'rel_canonical' );

移除feed

HTML 中通过

<link rel="alternate" type="application/rss+xml" title="feed名" href="http://3water.com/feed/" />

来指定博客feed。可以被浏览器检测到,然后被读者订阅。
如果你不想添加feed,或者想使用烧制的feed(如FeedSky或者Feedburner烧制的feed),可以移除之。

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

如果用的烧制的feed,然后还可以再手动添加feed地址。

PHP 相关文章推荐
PHP类的使用 实例代码讲解
Dec 28 PHP
PHP 一个比较完善的简单文件上传
Mar 25 PHP
DISCUZ在win2003环境下 Unable to access ./include/common.inc.php in... 的问题终极解决方案
Nov 21 PHP
php Ubb代码编辑器函数代码
Jul 05 PHP
php根据身份证号码计算年龄的实例代码
Jan 18 PHP
PHP输出英文时间日期的安全方法(RFC 1123格式)
Jun 13 PHP
PHP中把对象转换为关联数组代码分享
Apr 09 PHP
PHP闭包函数传参及使用外部变量的方法
Mar 15 PHP
PHP判断FORM表单或URL参数来的数据是否为整数的方法
Mar 25 PHP
既简单又安全的PHP验证码 附调用方法
Jun 02 PHP
Zend Framework校验器Zend_Validate用法详解
Dec 09 PHP
基于laravel belongsTo使用详解
Oct 18 PHP
WordPress的文章自动添加关键词及关键词的SEO优化
Mar 01 #PHP
详解WordPress中的头像缓存和代理中的缓存更新方法
Mar 01 #PHP
php编程每天必学之表单验证
Mar 01 #PHP
实例讲解PHP设计模式编程中的简单工厂模式
Feb 29 #PHP
PHP Try-catch 语句使用技巧
Feb 28 #PHP
linux下为php添加iconv模块的方法
Feb 28 #PHP
PHP中模拟链表和链表的基本操作示例
Feb 27 #PHP
You might like
Php部分常见问题总结
2006/10/09 PHP
解析php框架codeigniter中如何使用框架的session
2013/06/24 PHP
php截取中文字符串函数实例
2015/02/23 PHP
清华大学出版的事半功倍系列 javascript全部源代码
2007/05/04 Javascript
javascript 利用Image对象实现的埋点(某处的点击数)统计
2012/12/28 Javascript
JavaScript中的style.display属性操作
2013/03/27 Javascript
js获取url参数代码实例分享(JS操作URL)
2013/12/13 Javascript
JavaScript中判断变量是数组、函数或是对象类型的方法
2015/02/25 Javascript
JavaScript中的Math.LN2属性用法详解
2015/06/12 Javascript
javascript实现在指定元素中垂直水平居中
2015/09/13 Javascript
基于Javascript实现文件实时加载进度的方法
2016/10/12 Javascript
Angular2+国际化方案(ngx-translate)的示例代码
2017/08/23 Javascript
vue添加axios,并且指定baseurl的方法
2018/09/19 Javascript
移动端吸顶fixbar的解决方案详解
2019/07/17 Javascript
vue实现虚拟列表功能的代码
2020/07/28 Javascript
JavaScript本地储存:localStorage、sessionStorage、cookie的使用
2020/10/13 Javascript
Python单例模式实例分析
2015/01/14 Python
Python中的anydbm模版和shelve模版使用指南
2015/07/09 Python
python+matplotlib绘制饼图散点图实例代码
2018/01/20 Python
Python实现的序列化和反序列化二叉树算法示例
2019/03/02 Python
Python生成指定数量的优惠码实操内容
2019/06/18 Python
pytorch打印网络结构的实例
2019/08/19 Python
详解Python直接赋值,深拷贝和浅拷贝
2020/07/09 Python
css3中transition属性详解
2014/09/02 HTML / CSS
size?瑞典:英国伦敦的球鞋精品店
2018/03/01 全球购物
澳大利亚百货商店中销量第一的商务衬衫品牌:Van Heusen
2018/07/26 全球购物
英国老牌潮鞋店:Offspring
2019/08/19 全球购物
美国体育用品商店:Academy Sports + Outdoors
2020/01/04 全球购物
Three Graces London官网:英国奢侈品牌
2021/03/18 全球购物
一套软件开发工程师笔试题
2015/05/18 面试题
J2EE面试题集锦(附答案)
2013/08/16 面试题
金融行业职业生涯规划范文
2014/01/17 职场文书
2014端午节活动策划方案
2014/01/27 职场文书
讲文明知礼仪演讲稿
2014/09/13 职场文书
Redis如何实现验证码发送 以及限制每日发送次数
2022/04/18 Redis
MySQL范围查询优化的场景实例详解
2022/06/10 MySQL