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

9

Existe-t-il une fonction pour obtenir une liste des Meta Box enregistrées et 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

Michael Ecklund
la source
1
Veuillez annuler vos modifications et poser une nouvelle question au lieu de simplement en ajouter une existante. L'obtention des options d'écran est très différente de l'obtention des méta-boîtes.
EAMann

Réponses:

9

Pas vraiment, mais vous pouvez définir le vôtre. Toutes les métadonnées sont stockées dans la variable globale $wp_meta_boxesqui 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 affichera toutes les métadonnées enregistrées pour un écran spécifique et un contexte spécifique. Vous pouvez également approfondir davantage car ce tableau est également un tableau multidimensionnel qui sépare les métadonnées par priorité et par identifiant.


Supposons donc que vous souhaitiez obtenir un tableau contenant toutes les métadonnées dont la priorité est "normale" sur le tableau de bord d'administration. Vous appelleriez comme suit:

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

Il est identique au tableau global$wp_meta_boxes['dashboard']['normal'] et il s'agit également d'un tableau multidimensionnel.

Suppression des méta-boîtes de base

Disons que vous souhaitez supprimer un tas de métadonnées. La fonction ci-dessus peut être légèrement modifiée pour bénéficier des avantages suivants:

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 vouliez supprimer, disons, le widget des liens entrants du tableau de bord, vous appelleriez:

remove_meta_boxes( 'dashboard', 'normal', 'core', 'dashboard_incoming_links' );
EAMann
la source
hé là, je sais que vous avez répondu depuis longtemps mais pourriez-vous s'il vous plaît jeter un oeil à ma question sur ce même problème? Ça globalne marche pas pour moi! Merci. wordpress.stackexchange.com/questions/318834/…
middlelady
1

Sur le tableau de bord WordPress, des métadonnées s'affichent. Il y a une colonne normale et une colonne latérale.

Je peux obtenir une liste des métadonnées 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 voir une liste des méta-boîtes enregistrées.

Michael Ecklund
la source
1
Ce code ne fournit pas une liste des métadonnées disponibles.
fuxia
@toscho C'est le cas si vousprint_r($wp_meta_boxes);
Michael Ecklund