编写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 相关文章推荐
Zend 输出产生XML解析错误
Mar 03 PHP
php 异常处理实现代码
Mar 10 PHP
php导入导出excel实例
Oct 25 PHP
PHP中应该避免使用同名变量(拆分临时变量)
Apr 03 PHP
php仿微信红包分配算法的实现方法
May 13 PHP
总结对比php中的多种序列化
Aug 28 PHP
thinkPHP自动验证、自动添加及表单错误问题分析
Oct 17 PHP
PHP插件PHPMailer发送邮件功能
Feb 28 PHP
PHP命名空间namespace及use的简单用法分析
Aug 03 PHP
PHP实现微信退款功能
Oct 02 PHP
Laravel基础_关于view共享数据的示例讲解
Oct 14 PHP
数据结构之利用PHP实现二分搜索树
Oct 25 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实现遍历文件夹的方法汇总
2017/03/02 PHP
php微信开发之音乐回复功能
2018/06/14 PHP
PHP asXML()函数讲解
2019/02/03 PHP
laravel返回统一格式错误码问题
2019/11/04 PHP
javascript下过滤数组重复值的代码
2007/09/10 Javascript
js 模拟实现类似c#下的hashtable的简单功能代码
2010/01/24 Javascript
JS 实现导航栏悬停效果(续2)
2013/09/24 Javascript
Javascript 读取操作Sql中的Xml字段
2014/10/09 Javascript
JQuery实现鼠标滚轮滑动到页面节点
2015/07/28 Javascript
10个JavaScript中易犯小错误
2016/02/14 Javascript
微信小程序 image组件binderror使用例子与js中的onerror区别
2017/02/15 Javascript
JavaScript笛卡尔积超简单实现算法示例
2018/07/30 Javascript
JS实现的碰撞检测与周期移动完整示例
2019/09/02 Javascript
Vue过渡效果之CSS过渡详解(结合transition,animation,animate.css)
2020/02/05 Javascript
Vue 技巧之控制父类的 slot
2020/02/24 Javascript
聊聊vue 中的v-on参数问题
2021/01/29 Vue.js
[02:11]DOTA2上海特级锦标赛主赛事第二日RECAP
2016/03/04 DOTA
[01:20]DOTA2更新全新英雄 天涯墨客现已加入游戏
2018/08/25 DOTA
Python 异常处理的实例详解
2017/09/11 Python
python中Switch/Case实现的示例代码
2017/11/09 Python
python Crypto模块的安装与使用方法
2017/12/21 Python
python中的闭包函数
2018/02/09 Python
python字符串循环左移
2019/03/08 Python
用Python实现二叉树、二叉树非递归遍历及绘制的例子
2019/08/09 Python
Python的互斥锁与信号量详解
2019/09/12 Python
基于Python批量生成指定尺寸缩略图代码实例
2019/11/20 Python
HTML5中5个简单实用的API
2014/04/28 HTML / CSS
HTML5中的Web Notification桌面右下角通知功能的实现
2018/04/19 HTML / CSS
linux面试题参考答案(9)
2016/01/29 面试题
应届毕业生应聘自荐信范文
2014/02/26 职场文书
卫生系统先进事迹
2014/05/13 职场文书
幼儿园秋季开学寄语
2014/08/02 职场文书
老兵退伍标语
2014/10/07 职场文书
个人欠款协议书范本2014
2014/11/02 职场文书
结婚喜宴迎宾词
2015/08/10 职场文书
JavaScript架构localStorage特殊场景下二次封装操作
2022/06/21 Javascript