Liste der registrierten Meta-Boxen abrufen und entfernen


9

Gibt es eine Funktion zum Abrufen und Entfernen einer Liste registrierter Meta-Boxen? Ich sehe, dass es eine Methode zum Hinzufügen und Entfernen gibt.

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

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


1
Bitte setzen Sie Ihre Änderungen zurück und stellen Sie eine neue Frage, anstatt nur eine vorhandene zu ergänzen. Das Abrufen von Bildschirmoptionen unterscheidet sich stark vom Abrufen von Meta-Boxen.
EAMann

Antworten:


9

Nicht wirklich, aber Sie können Ihre eigenen definieren. Alle Meta-Boxen werden in der globalen Variablen gespeichert, $wp_meta_boxesdie ein mehrdimensionales Array ist.

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

Dieses Array zeigt alle Meta-Boxen an, die für einen bestimmten Bildschirm und einen bestimmten Kontext registriert sind. Sie können auch einen weiteren Drilldown durchführen, da dieses Array auch ein mehrdimensionales Array ist, das Meta-Boxen nach Priorität und ID trennt.


Angenommen, Sie möchten ein Array erhalten, das alle Meta-Boxen enthält, die im Admin-Dashboard "normale" Priorität haben. Sie würden Folgendes nennen:

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

Dies ist identisch mit dem globalen Array $wp_meta_boxes['dashboard']['normal']und es ist auch ein mehrdimensionales Array.

Kern-Meta-Boxen entfernen

Angenommen, Sie möchten eine Reihe von Meta-Boxen entfernen. Die obige Funktion kann leicht angepasst werden, um Folgendes zu nutzen:

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

Wenn Sie beispielsweise das Widget für eingehende Links aus dem Dashboard entfernen möchten, rufen Sie Folgendes auf:

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

Hey, ich weiß, es ist lange her, dass du geantwortet hast, aber könntest du bitte meine Frage zu genau diesem Problem beantworten? Das globalfunktioniert bei mir nicht! Vielen Dank. wordpress.stackexchange.com/questions/318834/…
middlelady

1

Im WordPress-Dashboard werden Meta-Boxen angezeigt. Es gibt eine normale Spalte und eine Seitenspalte.

Ich kann eine Liste der registrierten Meta-Boxen abrufen und sie mithilfe des folgenden Codes aus dem Dashboard entfernen:

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

Verwenden Sie einfach print_r($wp_meta_boxes);, um eine Liste der registrierten Meta-Boxen anzuzeigen.


1
Dieser Code enthält keine Liste der verfügbaren Meta-Boxen.
Fuxia

@toscho Es tut, wenn Sieprint_r($wp_meta_boxes);
Michael Ecklund
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.