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

do_meta_boxes( string|WP_Screen $screen, string $context, mixed $data_object )

meta组框模板函数

meta_box meta组框


参数

$screen

(string|WP_Screen)(必填) 屏幕标识符。如果您使用add_menu_page()add_submenu_page()创建了新屏幕(即screen_id),请确保您的菜单slug符合sanitize_key()的限制,否则'screen'菜单可能无法在您的页面上正确呈现。

$context

(string)(必填) 显示meta组框的屏幕上下文。

$data_object

(mixed)(必填) 作为第一个参数传递给meta组框回调函数。通常这是当前屏幕的焦点对象,例如WP_PostWP_Comment对象。


返回

(int) meta_boxes的数目。


更多信息

此函数输出注册到特定页面和上下文的所有meta组框。应使用add_meta_box()函数注册meta组框。



源码

查看源码 官方文档


更新日志

版本描述
2.5.0开始引入

使用示例

  • 示例1

    当想要更改meta组框的顺序时,可以使用一个未记录的(我在WP.org上找不到)过滤器。

    get_user_option_meta-box-order_[CUSTOM_POST_TYPE]
    它将有一个参数$order数组。

    例如,对于名为posts的CPT
    get_user_option_meta-box-order_post

    这是一个重新排序meta组框的示例(请注意,此示例可能与meta组框不同)

    add_filter( 'get_user_option_meta-box-order_post', 'wpse25793_one_column_for_all' );
    function wpse25793_one_column_for_all( $order )
    {
        return array(
            'normal'   => join( ",", array(
                'postexcerpt',
                'formatdiv',
                'trackbacksdiv',
                'tagsdiv-post_tag',
                'categorydiv',
                'postimagediv',
                'postcustom',
                'commentstatusdiv',
                'slugdiv',
                'authordiv',
                'submitdiv',
            ) ),
            'side'     => '',
            'advanced' => '',
        );
    }

    资料来源:http://wordpress.stackexchange.com/questions/25793/how-to-force-one-column-layout-on-custom-post-type-edit-page/25814#25814

  • 示例2

    这就是如何注册一个新的meta box,然后使用do_meta_boxes函数输出该组框:

    function adding_custom_meta_boxes() {
        add_meta_box( 
            'meta_box_id',
            __( 'Title of the Metabox' ),
            'callback_metabox_function',
            'my_custom_menu_page' );
    }
    add_action( 'add_meta_boxes', 'adding_custom_meta_boxes', 10, 2 );
    
    function callback_metabox_function(){
        echo 'Metabox Content';
    }
    
    do_meta_boxes( 'my_custom_menu_page', 'normal', '' );
    
  • 示例3

    值得一提的是,@ramon fincken示例中引用的‘get_user_option_meta-box-order_post’钩子是“未记录的”,只是因为它是一个动态钩子,是get_user_option_{$option}钩子,其中“meta-box-order”是一个特定的用户选项。不过这是一个很酷的提示:-)

  • 示例4

    实例

    下面是一个示例,它使用add_meta_box注册一个新的meta box,然后使用此do_meta_boxes函数输出该组框:

    add_meta_box( 
        'my-custom-meta-box',
        __( 'My Custom Meta Box', 'textdomain' ),
        'my_custom_menu_page',
        'normal'
    );
    
    do_meta_boxes( 'my_custom_menu_page', 'normal', '' );