WordPress 5.2 新特性之一:引入的 一个简单的动作钩子—— wp_body_open
。 对于主题或者插件开发者来说 ,这个简单的钩子对在主题中插入代码有巨大的影响。
wp_body_open():触发wp_body_open动作的功能。
类似:wp_head()或者wp_footer()函数。
wp_head()
:这个函数可以执行 wp_head
动作钩子,从而在<head>
标签中插入代码;
wp_footer()
:这个函数可以在<body>
标签结尾之前插入代码。
但是到目前为止,没有统一的函数可以在 <body>
标签 开头插入代码,这是 WordPress 非常大的一个缺点,因为开发者为了在<body>
标签开头插入代码需要自己注册很多函数。
在WordPress 5.2 中引入了 wp_body_open()
函数可以激活 wp_body_open
动作钩子,这个函数允许开发者在 <body>
标签 开头插入自定义的代码; 目前,所有WordPress 默认主题的header.php
文件中都使用了 wp_body_open()
函数,WordPress 5.2 以后的主题结构如下:
<html>
<head>
..
<?php wp_head(); ?>
</head>
<body>
<?php wp_body_open(); ?>
..
<?php wp_footer(); ?>
</body>
</html>
兼容性
if ( ! function_exists( 'wp_body_open' ) ) {
/**
* Shim for wp_body_open, ensuring backwards compatibility with versions of WordPress older than 5.2.
*/
function wp_body_open() {
do_action( 'wp_body_open' );
}
}
举例(2020主题):
在functions.php
功能:
if ( ! function_exists( 'wp_body_open' ) ) {
/**
* Shim for wp_body_open, ensuring backwards compatibility with versions of WordPress older than 5.2.
*/
function wp_body_open() {
do_action( 'wp_body_open' );
}
}
/**
* Include a skip to content link at the top of the page so that users can bypass the menu.
*/
function twentytwenty_skip_link() {
echo '<a class="skip-link screen-reader-text" href="#site-content">' . __( 'Skip to the content', 'twentytwenty' ) . '</a>';
}
add_action( 'wp_body_open', 'twentytwenty_skip_link', 5 );
模板文件中:
<body <?php body_class(); ?>>
<?php
wp_body_open();
?>
<header id="site-header" class="header-footer-group" role="banner">
对应
<body class="home blog logged-in admin-bar no-customize-support enable-search-modal has-no-pagination showing-comments show-avatars footer-top-visible">
<a class="skip-link screen-reader-text" href="#site-content">跳至内容</a>
<header id="site-header" class="header-footer-group" role="banner">