Removendo meta checkboxs: remove-meta_box () ou unset ()?

Eu vi duas maneiras de remover meta checkboxs: remove_meta_box () e 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_meta_box parece melhor, uma vez que é claramente destinado apenas para isso, mas também vi a formulação não definida em vários lugares.

Por que eu usaria um contra o outro?

Solutions Collecting From Web of "Removendo meta checkboxs: remove-meta_box () ou unset ()?"

Em caso de dúvida, use a API.

Digamos que a estrutura de $wp_meta_boxes mudará ou desaparecerá um dia.

remove_meta_box() ainda funcionará, porque a API é um contrato entre o núcleo e os desenvolvedores. Desbloquear algumas chaves em uma variável global pode quebrar.

unset() é mais fácil de escrever quando você deseja remover um grupo inteiro: unset($wp_meta_boxes['dashboard']) é claramente mais simples do que correr por cada checkbox separada. Mas o código mais curto nem sempre é melhor, então isso não deve ser usado no código público.

Nota: ambos os methods realmente funcionam de forma diferente: unset() remove um elemento da matriz, enquanto remove_meta_box() define o valor dos elementos como FALSE :

 foreach ( array('high', 'core', 'default', 'low') as $priority ) $wp_meta_boxes[$page][$context][$priority][$id] = false; 

Outros plugins podem confiar na existência desse elemento – e interromper depois de ter usado unset() .