webentwicklung-frage-antwort-db.com.de

Liste der registrierten Meta-Boxen abrufen und entfernen

Gibt es eine Funktion, um eine Liste der registrierten Meta-Boxen abzurufen und diese zu entfernen? 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

8
Michael Ecklund

Nicht wirklich, aber Sie können Ihre eigenen definieren. Alle Meta-Boxen werden in der globalen Variablen $wp_meta_boxes gespeichert, die 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];          
}

In diesem Array werden alle für einen bestimmten Bildschirm und einen bestimmten Kontext registrierten Meta-Boxen angezeigt. 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.


Nehmen wir also an, Sie möchten ein Array erhalten, das alle Meta-Boxen mit "normaler" Priorität im Admin-Dashboard enthält. Sie würden folgendes anrufen:

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

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

Core-Meta-Boxen entfernen

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

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

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

Ich kann eine Liste der registrierten Meta-Boxen abrufen und diese 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.

0
Michael Ecklund