当前浏览:首页 / WordPress函数 / wp_body_open()

wp_body_open()

触发wp_body_open动作

body

open


描述

‘wp_body_open’



源码

查看源码 官方文档


更新日志

版本描述
5.2.0开始引入

使用示例

  • 示例1

    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>
  • 示例2

    不要忘记向后兼容性。

    if ( function_exists( 'wp_body_open' ) ) {
    	wp_body_open();
    } else {
    	do_action( 'wp_body_open' );
    }
    
  • 示例3

    我认为这是添加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>
  • 示例4

    作为一名插件开发人员,我如何利用这个优势?如果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中。

  • 示例5

    自定义主题挂钩

    许多主题在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' );
    }