描述
源码
更新日志
版本 | 描述 |
---|---|
5.2.0 | 开始引入 |
使用示例
WordPress主题开发者应该在他们的主题中使用`
wp_head()
`、`wp_body_open()
`和`wp_footer()
`函数。新的WordPress主题结构:
<html> <head> .. .. <?php wp_head(); ?> </head> <body> <?php wp_body_open(); ?> .. .. <?php wp_footer(); ?> </body> </html>
不要忘记向后兼容性。
if ( function_exists( 'wp_body_open' ) ) { wp_body_open(); } else { do_action( 'wp_body_open' ); }
我认为这是添加
wp_body_open();
函数以实现向后兼容性的最佳方式步骤1:检查函数是否存在,如果不存在,则生成一个名为
wp_body_open();
的函数例子:
if ( ! function_exists( 'wp_body_open' ) ) { function wp_body_open() { do_action( 'wp_body_open' ); } }
然后将函数放在body标签之后。
例子:
<html> <head> .. .. <?php wp_head(); ?> </head> <body> <?php wp_body_open(); ?> .. .. <?php wp_footer(); ?> </body> </html>
作为一名插件开发人员,我如何利用这个优势?如果WP版本为5.2以上,但主题较旧和/或不包括
wp_body_open
,如何确保包含我的代码?以下是@danieliser在this ticket answer上提出的解决方案。
<?php add_action( 'wp_body_open', 'wpdocs_my_function' ); add_action( 'wp_footer', 'wpdocs_my_function' ); function wpdocs_my_function() { if ( doing_action( 'wp_body_open' ) ) { remove_action ( 'wp_footer', 'wpdocs_my_function' ); } // do stuff. }
如果你想在主题打开的body标签之后立即包含插件中的代码,并且该主题是最新的,如果不是,那么你的代码将以旧的方式包含在
wp_footer
中。自定义主题挂钩
许多主题在body标记的开头使用自己的自定义动作。他们应该考虑迁移到核心wp_body_open动作。
为了向后兼容,在注入自定义代码时,主题开发人员可以使用条件逻辑来钩住正确的操作
function custom_code() { return '<!-- some code -->'; } if ( did_action( 'wp_body_open' ) ) { add_action( 'wp_body_open', 'custom_code' ); } else { add_action( 'custom_theme_hook', 'custom_code' ); }