删除meta box:Remove-meta_box()还是unset()?

时间:2013-05-08 作者:Andy Giesler

我见过两种删除元框的方法: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公式。

为什么我要用一个来对比另一个?

1 个回复
最合适的回答,由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().

结束

相关推荐

将Metabox日期月份编号转换为单词

我使用带有日期(日、月和年)的自定义metabox。问题是,当我尝试将日期数字转换为日期字时,例如10是10月。我使用此代码:function eventposttype_get_the_month_abbr($month) { global $wp_locale; for ( $i = 1; $i < 13; $i = $i +1 ) { if ( $i == $month ) $monthabbr = $wp