web-dev-qa-db-fra.com

Obtenir la liste des méta-boîtes enregistrées et les supprimer

Existe-t-il une fonction permettant d’obtenir une liste des Meta Box enregistrées et de les supprimer? Je vois qu'il existe une méthode pour ajouter et supprimer.

http://codex.wordpress.org/Function_Reference/remove_meta_box

http://codex.wordpress.org/Function_Reference/add_meta_box

8
Michael Ecklund

Pas vraiment, mais vous pouvez définir le vôtre. Toutes les méta-boîtes sont stockées dans la variable globale $wp_meta_boxes qui est un tableau multidimensionnel.

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];          
}

Ce tableau montrera toutes les boîtes de méta enregistrées pour un écran spécifique et un contexte spécifique. Vous pouvez également explorer plus en profondeur, car ce tableau est également un tableau multidimensionnel qui sépare les boîtes méta par priorité et par id.


Supposons donc que vous souhaitiez obtenir un tableau contenant toutes les boîtes de méta de priorité "normale" sur le tableau de bord d'administration. Vous appelleriez ce qui suit:

$dashboard_boxes = get_meta_boxes( 'dashboard', 'normal' );

C'est identique au global array $wp_meta_boxes['dashboard']['normal'] et c'est aussi un tableau multidimensionnel.

Supprimer les méta-boîtes de base

Disons que vous voulez supprimer un tas de boîtes de méta. La fonction ci-dessus peut être légèrement modifiée pour que:

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] );
}

Si vous souhaitez supprimer, par exemple, le widget de liens entrants du tableau de bord, appelez:

remove_meta_boxes( 'dashboard', 'normal', 'core', 'dashboard_incoming_links' );
7
EAMann

Sur le tableau de bord WordPress, des boîtes de méta sont affichées. Il y a une colonne normale et une colonne latérale.

Je peux obtenir une liste de méta-boîtes enregistrées et les supprimer du tableau de bord en utilisant le code suivant:

// 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');

Utilisez simplement print_r($wp_meta_boxes); pour afficher une liste des boîtes de méta enregistrées.

0
Michael Ecklund