参数
- $screen
-
(string|WP_Screen)(必填) 屏幕标识符。如果您使用add_menu_page()或add_submenu_page()创建了新屏幕(即screen_id),请确保您的菜单slug符合sanitize_key()的限制,否则'screen'菜单可能无法在您的页面上正确呈现。
- $context
-
(string)(必填) 显示meta组框的屏幕上下文。
- $data_object
-
(mixed)(必填) 作为第一个参数传递给meta组框回调函数。通常这是当前屏幕的焦点对象,例如
WP_Post
或WP_Comment
对象。
返回
(int) meta_boxes的数目。
更多信息
此函数输出注册到特定页面和上下文的所有meta组框。应使用add_meta_box()函数注册meta组框。
源码
更新日志
版本 | 描述 |
---|---|
2.5.0 | 开始引入 |
使用示例
当想要更改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
这就是如何注册一个新的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', '' );
值得一提的是,@ramon fincken示例中引用的‘get_user_option_meta-box-order_post’钩子是“未记录的”,只是因为它是一个动态钩子,是get_user_option_{$option}钩子,其中“meta-box-order”是一个特定的用户选项。不过这是一个很酷的提示:-)
实例
下面是一个示例,它使用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', '' );