编写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采集利器 Snoopy 试用心得
Jul 03 PHP
PHP使用DES进行加密与解密的方法详解
Jun 06 PHP
探讨方法的重写(覆载)详解
Jun 08 PHP
国外十大最流行的PHP框架排名
Jul 04 PHP
php实现上传图片生成缩略图示例
Apr 13 PHP
初识Laravel
Oct 30 PHP
php文件压缩之PHPZip类用法实例
Jun 18 PHP
PHP flush 函数使用注意事项
Aug 26 PHP
Yii2第三方类库插件Imagine的安装和使用
Jul 06 PHP
浅谈Yii乐观锁的使用及原理
Jul 25 PHP
PHP7新特性
Mar 09 PHP
详解Laravel制作API接口
May 31 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 ss7.5的数据调用 (笔记)
2010/03/08 PHP
php截取中文字符串函数实例
2015/02/23 PHP
php中文验证码实现方法
2015/06/18 PHP
php实现文件预览功能
2017/05/23 PHP
Javascript中的数学函数
2007/04/04 Javascript
javascript jQuery插件练习
2008/12/24 Javascript
Jquery插件写法笔记整理
2012/09/06 Javascript
jqgrid 表格数据导出实例
2013/11/21 Javascript
Node.js模拟浏览器文件上传示例
2014/03/26 Javascript
30分钟快速掌握Bootstrap框架
2016/05/24 Javascript
JavaScript数据操作_浅谈原始值和引用值的操作本质
2016/08/23 Javascript
Angular2 多级注入器详解及实例
2016/10/30 Javascript
thinkjs之页面跳转同步异步操作
2017/02/05 Javascript
JS实现两周内自动登录功能
2017/03/23 Javascript
微信小程序商城项目之淘宝分类入口(2)
2017/04/17 Javascript
基于vue 添加axios组件,解决post传参数为null的问题
2018/03/05 Javascript
vue如何通过id从列表页跳转到对应的详情页
2018/05/01 Javascript
vue.js轮播图组件使用方法详解
2018/07/03 Javascript
微信小程序视图容器(swiper)组件创建轮播图
2020/06/19 Javascript
python人人网登录应用实例
2014/09/26 Python
在Python中操作字典之setdefault()方法的使用
2015/05/21 Python
Python画图学习入门教程
2016/07/01 Python
Python基于回溯法子集树模板解决找零问题示例
2017/09/11 Python
Python英文文本分词(无空格)模块wordninja的使用实例
2019/02/20 Python
深入解析Python小白学习【操作列表】
2019/03/23 Python
python实现AES加密与解密
2019/03/28 Python
Python Charles抓包配置实现流程图解
2020/09/29 Python
Python 虚拟环境工作原理解析
2020/12/24 Python
创建市级文明单位实施方案
2014/03/01 职场文书
认错检讨书
2014/10/02 职场文书
党的群众路线批评与自我批评范文
2014/10/16 职场文书
店面出租协议书范本
2014/11/28 职场文书
2015年元旦文艺晚会总结(学院)
2014/11/28 职场文书
工作调动申请报告
2015/05/18 职场文书
工商局调档介绍信
2015/10/22 职场文书
90行Python代码开发个人云盘应用
2021/04/20 Python