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 区域, 可以看到如下代码:
这是隐性显示的 WordPress 版本信息, 默认添加可以被黑客利用, 攻击特定版本的 WordPress 漏洞清除代码:
remove_action( 'wp_head', 'wp_generator' );
移除离线编辑器开放接口
WordPress 自动添加两行离线编辑器的开放接口
其 中 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 文件来使得博客支持
在 WordPress 2.9 发布之后, WordPress 已经默认支持这一标签了, 我们无需做任何动作, 主题就支持这一标签这对于文章固定链接的更改很有帮助, 可以增加对搜索引擎的友好度但是如果你觉得这个标签对你无用, 也可以移除之:
remove_action( 'wp_head', 'rel_canonical' );
移除 feed
html 中通过
来指定博客 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 地址
来源: https://www.php1.cn/detail/php-329f6ff726.html