问题描述
是否有获取注册的元框列表并删除它们的功能?我看到有一种添加和删除的方法。
http://codex.wordpress.org/Function_Reference/remove_meta_box
http://codex.wordpress.org/Function_Reference/add_meta_box
最佳解决方案
不是真的,但你可以自己定义。所有元框都存储在全局变量 $wp_meta_boxes
中,它是一个 multi-dimensional 数组。
function get_meta_boxes( $screen = null, $context = 'advanced' ) {
global $wp_meta_boxes;
if ( empty( $screen ) )
$screen = get_current_screen();
elseif ( is_string( $screen ) )
$screen = convert_to_screen( $screen );
$page = $screen->id;
return $wp_meta_boxes[$page][$context];
}
该数组将显示为特定屏幕和特定上下文注册的所有元框。您还可以进一步深入,因为此数组也是一个多维数组,通过优先级和 ID 隔离元框。
所以我们假设你想得到一个数组,它包含管理仪表板上”normal” 优先级的所有元框。你会调用以下内容:
$dashboard_boxes = get_meta_boxes( 'dashboard', 'normal' );
这与全局阵列 $wp_meta_boxes['dashboard']['normal']
相同,它也是一个 multi-dimensional 阵列。
删除核心元框
假设您要删除一堆元框。上面的功能可以略微调整,以便:
function remove_meta_boxes( $screen = null, $context = 'advanced', $priority = 'default', $id ) {
global $wp_meta_boxes;
if ( empty( $screen ) )
$screen = get_current_screen();
elseif ( is_string( $screen ) )
$screen = convert_to_screen( $screen );
$page = $screen->id;
unset( $wp_meta_boxes[$page][$context][$priority][$id] );
}
如果您想从 “仪表板” 中删除 “传入链接” 窗口小工具,您可以调用:
remove_meta_boxes( 'dashboard', 'normal', 'core', 'dashboard_incoming_links' );
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。