Entfernen von Meta-Boxen: remove-meta_box () oder unset ()?

Ich habe zwei Möglichkeiten gesehen, um Meta-Boxen zu entfernen: remove_meta_box () und unset ().

function TEST_remove_dashboard_widgets(){ remove_meta_box( 'dashboard_recent_comments', 'dashboard', 'normal' ); } add_action('wp_dashboard_setup', 'bmc_remove_dashboard_widgets'); 

gegen

 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 scheint besser zu sein, da es eindeutig dafür gedacht ist, aber ich habe die unscharfe Formulierung auch an mehreren Stellen gesehen.

Warum sollte ich eins gegen das andere benutzen?

Solutions Collecting From Web of "Entfernen von Meta-Boxen: remove-meta_box () oder unset ()?"

Verwenden Sie im Zweifelsfall die API.

Nehmen wir an, die Struktur von $wp_meta_boxes wird sich ändern oder eines Tages $wp_meta_boxes .

remove_meta_box() funktioniert immer noch, da die API ein Vertrag zwischen Core und Entwicklern ist. Das Aufheben einiger Schlüssel in einer globalen Variablen könnte unterbrochen werden.

unset() ist einfacher zu schreiben, wenn Sie eine ganze Gruppe entfernen möchten: unset($wp_meta_boxes['dashboard']) ist deutlich einfacher als das Durchlaufen jeder einzelnen Box. Aber kürzerer Code ist nicht immer besser, daher sollte dieser Code nicht im öffentlichen Code verwendet werden.

Beachten Sie, dass beide Methoden tatsächlich anders funktionieren: unset() entfernt ein Element aus dem Array, während remove_meta_box() den remove_meta_box() auf FALSE :

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

Andere Plugins können sich auf die Existenz dieses Elements verlassen – und brechen, nachdem Sie unset() .