Esiste una funzione per ottenere un elenco di Meta Box registrate e rimuoverle? Vedo che esiste un metodo per aggiungere e rimuovere.
http://codex.wordpress.org/Function_Reference/remove_meta_box
Esiste una funzione per ottenere un elenco di Meta Box registrate e rimuoverle? Vedo che esiste un metodo per aggiungere e rimuovere.
http://codex.wordpress.org/Function_Reference/remove_meta_box
Risposte:
Non proprio, ma puoi definire il tuo. Tutte le meta box sono memorizzate nella variabile globale $wp_meta_boxes
che è un array multidimensionale.
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];
}
Questo array mostrerà tutte le meta box registrate per una schermata specifica e un contesto specifico. Puoi anche approfondire ulteriormente perché questo array è anche un array multidimensionale che separa le meta-box per priorità e ID.
Supponiamo quindi che tu voglia ottenere un array che contenga tutte le meta-box con priorità "normale" nella Dashboard di amministrazione. Chiameresti quanto segue:
$dashboard_boxes = get_meta_boxes( 'dashboard', 'normal' );
Questo è identico all'array globale$wp_meta_boxes['dashboard']['normal']
ed è anche un array multidimensionale.
Supponiamo che tu voglia rimuovere un mucchio di meta box. La funzione sopra può essere leggermente modificata per avvalersi che:
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] );
}
Se si desidera rimuovere, ad esempio, il widget dei collegamenti in entrata dalla Dashboard, si chiamerebbe:
remove_meta_boxes( 'dashboard', 'normal', 'core', 'dashboard_incoming_links' );
global
non funziona per me! Grazie. wordpress.stackexchange.com/questions/318834/…
Sul pannello di WordPress, ci sono meta box visualizzati. C'è una colonna normale e una colonna laterale.
Sono in grado di ottenere un elenco di meta box registrate e rimuoverle dalla dashboard utilizzando il seguente codice:
// Remove some non-sense meta boxes
function remove_dashboard_meta_boxes(){
global $wp_meta_boxes;
// Dashboard core widgets :: Left Column
unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_incoming_links']);
unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_recent_comments']);
unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_plugins']);
unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_right_now']);
// Additional dashboard core widgets :: Right Column
unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_recent_drafts']);
unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_quick_press']);
unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_primary']);
unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_secondary']);
// Remove the welcome panel
update_user_meta(get_current_user_id(), 'show_welcome_panel', false);
}
add_action('wp_dashboard_setup', 'remove_dashboard_meta_boxes');
Basta usare print_r($wp_meta_boxes);
per vedere un elenco di meta box registrate.
print_r($wp_meta_boxes);