我见过两种删除元框的方法:remove\\u meta\\u box()和unset()。
function TEST_remove_dashboard_widgets(){
remove_meta_box( \'dashboard_recent_comments\', \'dashboard\', \'normal\' );
}
add_action(\'wp_dashboard_setup\', \'bmc_remove_dashboard_widgets\');
vs。
function TEST_remove_dashboard_widgets() {
global $wp_meta_boxes;
unset($wp_meta_boxes[\'dashboard\'][\'normal\'][\'core\'][\'dashboard_recent_comments\']);
}
add_action(\'wp_dashboard_setup\', \'bmc_remove_dashboard_widgets\');
remove\\u meta\\u box似乎更好,因为它显然就是为了这个目的,但我也在几个地方看到了unset公式。
为什么我要用一个来对比另一个?
最合适的回答,由SO网友:fuxia 整理而成
如有疑问,请使用API。
比如说$wp_meta_boxes
总有一天会改变或消失。
remove_meta_box()
仍然可以工作,因为API是core和开发人员之间的合同。在全局变量中取消设置某些键可能会中断。
unset()
要删除整个组时更容易编写:unset($wp_meta_boxes[\'dashboard\'])
显然比遍历每个单独的框要简单。但代码越短并不总是越好,所以这不应该用在公共代码中。
请注意,这两种方法实际上工作方式不同:unset()
从数组中删除元素,而remove_meta_box()
将元素值设置为FALSE
:
foreach ( array(\'high\', \'core\', \'default\', \'low\') as $priority )
$wp_meta_boxes[$page][$context][$priority][$id] = false;
其他插件可能依赖于该元素的存在,并在使用后中断
unset()
.