一般来说,WordPress
head
标签默认是指系统 WP_uhead
()函数,加载更多的元标签和链接,比如 WP
版本号、上一篇和下一篇文章的链接等元元素。有些元素本身对网站优化没有实际影响,那么我们就来说说 WordPress
是如何在白天去除标题中多余的元标签的。
一般来说,WordPress
head
标签默认是指系统 WP_uhead
()函数,加载更多的元标签和链接,比如 WP
版本号、上一篇和下一篇文章的链接等元元素。有些元素本身对网站优化没有实际影响,那么我们就来说说 WordPress
是如何在白天去除标题中多余的元标签的。
WordPress
从标题中移除冗余的元标签。
1.移除方法的详细说明。
在主题目录中找到functions
.php
文件,并在文件末尾添加以下代码以删除冗余标签和元素。
注意:请根据实际情况选择要删除的项目。
1.删除 WordPress
版本信息。
WordPress
自动添加版本号信息。在头部区域,您可以看到:
<meta
name
="generator
"content
="WordPress
5.2.1">
版本号是默认添加的,但是可以被黑客利用,攻击特定版本的 WordPress
漏洞。
移除代码:
remove_action
( 'wp_head
', 'wp_generator
' );
2、移除离线编辑器开放接口
WordPress
自动添加两行离线编辑器的开放接口,在 head
区域,可以看到:
<link
rel
="EditURI
"type
="application
/rsd
+xml
"title
="RSD
"href
="http
://wordpress
.cc
/xmlrpc
.php
?rsd
"> <link
rel
="wlwmanifest
"type
="application
/wlwmanifest
+xml
"href
="http
://wordpress
.cc
/wp
-includes
/wlwmanifest
.xml
">
其中 RSD
是一个广义的接口,wlwmanifest
是针对微软 Live
Writer
编辑器的。如果你不需要离线编辑,可移除之。即便你需要使用离线编辑器,大部分时候也不需要这两行代码。保留这两行代码可能会留有安全隐患。
移除代码:
remove_action
( 'wp_head
', 'rsd_link
' );remove_action
( 'wp_head
', 'wlwmanifest_link
' );
3、移除前后文、第一篇文章、主页 meta
信息
WordPress
把前后文、第一篇文章和主页链接全放在 meta
中。对 SEO
的帮助并不大,反而让增多 head
头部信息。建议删除
移除代码:
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 );//删除上下篇文章链接
4、移除 shortlink
标签
在 WordPress
3.0 开始,即使你已经设定了永久链接,但是在文章页面标签内还是会出现一个 shortlink
标签,如果不想搜索引擎抓取 “/?p
=” 的网址,那么 head
头部里短网址标签一并移除吧。移除代码如下:
remove_action
( 'wp_head
', 'wp_shortlink_wp_head
',10, 0 );//删除短链接
5、移除 feed
移除代码:
remove_action
( 'wp_head
', 'feed_links
', 2 );//文章和评论feed
remove_action
( 'wp_head
', 'feed_links_extra
', 3 ); //分类等feed
6、禁用 embeds
功能并移除 wp
-embed
.min
.js
文件
WordPress
自动添加 embeds
功能和 wp
-embed
.min
.js
文件,在 head
区域,可以看到:
<script
type
="text
/java
script
"src
="http
://wordpress
.cc
/wp
-includes
/js
/wp
-embed
.min
.js
?ver
=5.2.1"></script
>
移除代码:
function
disable_embeds_init
() { /* @var
WP
$wp
*/global
$wp
; //Remove
the
embed
query
var
. $wp
->public_query_vars
=array_diff
( $wp
->public_query_vars
,array
( ’embed
’, ) ); //Remove
the
REST
API
endpoint
.remove_action
( 'rest_
api
_init
', 'wp_oembed_register_route
' ); //Turn
off
add_filter
( 'embed_oembed_discover
', '__return_false
' ); //Don
't
filter
oEmbed
results
.remove_filter
( 'oembed_dataparse
', 'wp_filter_oembed_result
', 10 ); //Remove
oEmbed
discovery
links
.remove_action
( 'wp_head
', 'wp_oembed_add_discovery_links
' ); //Remove
oEmbed
-specific
JavaScript
from
the
front
-end
and
back
-end
.remove_action
( 'wp_head
', 'wp_oembed_add_host_js
' );add_filter
( 'tiny_mce_
plugin
s
', 'disable_embeds_tiny_mce_plugin
' ); //Remove
all
embeds
rewrite
rules
.add_filter
( 'rewrite_rules_array
', 'disable_embeds_rewrites
' ); }add_action
( 'init
', 'disable_embeds_init
', 9999 ); /** *Removes
the
'wpembed
'TinyMCE
plugin
. * * @since
1.0.0 * * @param
array
$plugins
List
of
TinyMCE
plugins
. * @return
array
The
modified
list
. */function
disable_embeds_tiny_mce_plugin
( $plugins
) {return
array_diff
( $plugins
,array
( 'wpembed
' ) ); } /** *Remove
all
rewrite
rules
related
to
embeds
. * * @since
1.2.0 * * @param
array
$rules
WordPress
rewrite
rules
. * @return
array
Rewrite
rules
without
embeds
rules
. */function
disable_embeds_rewrites
( $rules
) {foreach
( $rules
as
$rule
=> $rewrite
) {if
(false
!==strpos
( $rewrite
, 'embed
=true
' ) ) {unset
( $rules
[ $rule
] ); } }return
$rules
; } /** *Remove
embeds
rewrite
rules
on
plugin
activation
. * * @since
1.2.0 */function
disable_embeds_remove_rewrite_rules
() {add_filter
( 'rewrite_rules_array
', 'disable_embeds_rewrites
' );flush_rewrite_rules
(); }register_activation_hook
(__FILE__
, 'disable_embeds_remove_rewrite_rules
' ); /** *Flush
rewrite
rules
on
plugin
deactivation
. * * @since
1.2.0 */function
disable_embeds_flush_rewrite_rules
() {remove_filter
( 'rewrite_rules_array
', 'disable_embeds_rewrites
' );
7、移除 WordPress
头部加载 DNS
预获取(dns
-prefetch
)
在 head
我们可以看到:
<link
rel
="dns
-prefetch
"href
="//s
.w
.org
">
移除代码:
function
remove_dns_prefetch
( $hints
, $relation_type
) {if
( 'dns
-prefetch
' === $relation_type
) {return
array_diff
(wp_dependencies_unique_hosts
(), $hints
); }return
$hints
; }add_filter
( 'wp_resource_hints
', 'remove_dns_prefetch
', 10, 2 );
8、移除 emoji
表情 script
和 style
在 head
可以看到:
<script
type
="text
/javascript
">window
._wpemojiSettings
= {"baseUrl
":"https
:\/\/s
.w
.org
\/images
\/core
\/emoji
\/2.3\/72x72\/","ext
":".png
","svgUrl
":"https
:\/\/s
.w
.org
\/images
\/core
\/emoji
\/2.3\/svg
\/","svgExt
":".svg
","source
":{"concatemoji
":"http
:\/\/wordpress
.cc
\/wp
-includes
\/js
\/wp
-emoji
-release
.min
.js
?ver
=4.8"}}; !function
(a
,b
,c
){function
d
(a
){var
b
,c
,d
,e
,f
=String
.fromCharCode
;if
(!k
||!k
.fillText
)return
!1;switch
(k
.clearRect
(0,0,j
.width
,j
.height
),k
.textBaseline
="top
",k
.font
="600 32pxArial
",a
){case
"flag
":return
k
.fillText
(f
(55356,56826,55356,56819),0,0),b
=j
.toDataURL
(),k
.clearRect
(0,0,j
.width
,j
.height
),k
.fillText
(f
(55356,56826,8203,55356,56819),0,0),c
=j
.toDataURL
(),b
===c
&&(k
.clearRect
(0,0,j
.width
,j
.height
),k
.fillText
(f
(55356,57332,56128,56423,56128,56418,56128,56421,56128,56430,56128,56423,56128,56447),0,0),b
=j
.toDataURL
(),k
.clearRect
(0,0,j
.width
,j
.height
),k
.fillText
(f
(55356,57332,8203,56128,56423,8203,56128,56418,8203,56128,56421,8203,56128,56430,8203,56128,56423,8203,56128,56447),0,0),c
=j
.toDataURL
(),b
!==c
);case
"emoji4
":return
k
.fillText
(f
(55358,56794,8205,9794,65039),0,0),d
=j
.toDataURL
(),k
.clearRect
(0,0,j
.width
,j
.height
),k
.fillText
(f
(55358,56794,8203,9794,65039),0,0),e
=j
.toDataURL
(),d
!==e
}return
!1}function
e
(a
){var
c
=b
.createElement
("script
");c
.src
=a
,c
.defer
=c
.type
="text
/javascript
",b
.getElementsByTagName
("head
")[0].appendChild
(c
)}var
f
,g
,h
,i
,j
=b
.createElement
("canvas
"),k
=j
.getContext
&&j
.getContext
("2d");for
(i
=Array
("flag
","emoji4
"),c
.supports
={everything
:!0,everythingExceptFlag
:!0},h
=0;h
<i
.length
;h
++)c
.supports
[i
[h
]]=d
(i
[h
]),c
.supports
.everything
=c
.supports
.everything
&&c
.supports
[i
[h
]],"flag
"!==i
[h
]&&(c
.supports
.everythingExceptFlag
=c
.supports
.everythingExceptFlag
&&c
.supports
[i
[h
]]);c
.supports
.everythingExceptFlag
=c
.supports
.everythingExceptFlag
&&!c
.supports
.flag
,c
.DOMReady
=!1,c
.readyCallback
=function
(){c
.DOMReady
=!0},c
.supports
.everything
||(g
=function
(){c
.readyCallback
()},b
.addEventListener
?(b
.addEventListener
("DOMContentLoaded
",g
,!1),a
.addEventListener
("load
",g
,!1)):(a
.attachEvent
("onload
",g
),b
.attachEvent
("onreadystatechange
",function
(){"complete
"===b
.readyState
&&c
.readyCallback
()})),f
=c
.source
||{},f
.concatemoji
?e
(f
.concatemoji
):f
.wpemoji
&&f
.twemoji
&&(e
(f
.twemoji
),e
(f
.wpemoji
)))}(window
,document
,window
._wpemojiSettings
); </script
> <style
type
="text
/css
">img
.wp
-smiley
,img
.emoji
{display
:inline
!important
;border
:none
!important
;box
-shadow
:none
!important
;height
: 1em
!important
;width
: 1em
!important
;margin
: 0 .07em
!important
;vertical
-align
: -0.1em
!important
;background
:none
!important
;padding
: 0 !important
; } </style
>
这样一大段 emoji
表情包含的代码,会在页面加载静态资源,建议禁用和移除 JS
文件。
禁用代码:
remove_action
( 'wp_head
', 'print_emoji_detection_script
', 7 );remove_action
( 'wp_print_styles
', 'print_emoji_styles
' );
9、移除 wp
-json
链接
在 head
我们可以看到
<link
rel
="https
://api
.w
.org
/"href
="http
://wordpress
.cc
/wp
-json
/">
移除代码:
remove_action
( 'wp_head
', 'rest_output_link_wp_head
', 10 );
二、部分函数解释
1、wp_head
()函数
wp_head
()是 wordpress
的一个非常重要的函数,基本上所有的主题在 header
.php
这个文件里都会使用到这个函数,而且很多插 件为了在 header
上加点东西也会用到 wp_head
(),比如 SEO
的相关插件。不过在 wp_head
()出现的这个位置,会增加很多并 不常用或多余 的代 码,删除时这些不常用或多余可以通过 remove_action
移除这些代码。
2、 remove_action
函数
函数原型:
remove_action
( $tag
, $function_to_add
, $priority
, $accepted_args
);
该函数移除一个附属于指定动作 hook
的函数。该方法可用来移除附属于特定动作 hook
的默认函数,并可能用其它函数取而代之。
重要:添加 hook
时的$function_to_remove
和$priority
参数要能够相匹配,这样才可以移除 hook
。该原则也适用于过滤器和动作。移除失败时不进行警告提示。
参数
- $
tag
(字符串)(必需)将要被删除的函数所连接到的动作hook
。默认值:None
- $
function_to_remove
(回调)(必需) 将要被删除函数的名称默认值:None
- $
priority
(整数)(可选)函数优先级(在函数最初连接时定义)默认值:10 - $
accepted_args
(整数)(必需)函数所接受参数的数量。默认值:1
返回值
(布尔值)函数是否被移除。
Ttue
函数被成功移除False
函数未被移除
转载请注明:汇站网 » WordPress
网站从标题中删除不必要的元标签