web-dev-qa-db-fra.com

Comment obtenir un tableau d'éléments de menu à partir de la barre d'outils?

Semblable à générer un tableau du menu/sous-menu admin:

global $menu;
foreach ( $menu as $group => $item ) {
    echo '<pre>'; print_r( $item ); echo '</pre>';
}

Comment puis-je obtenir un tableau de tous les éléments de menu disponibles dans la barre d'outils? J'ai essayé d'utiliser la variable global $wp_admin_bar, mais cela ne semble pas être la bonne.

Toolbar

La raison pour laquelle je veux générer ce tableau est de l'utiliser dans un de mes plugins pour fournir une option permettant de choisir les éléments à masquer dans la barre d'outils, permettant aux utilisateurs de personnaliser leurs paramètres. En ce moment, j'ai créé manuellement un tableau appelé $toolbar pour choisir les éléments que je veux me cacher:

global $wp_admin_bar;
$toolbar = array(
    'wp-logo', // WordPress logo
    'comments', // Comments
    'new-post', // New > Post
    'search' // Search
    );
foreach ( $toolbar as $item ) {
    $wp_admin_bar -> remove_menu( $item );
}

Mise à jour [2016-09-16]

J'ai pu obtenir la liste complète en utilisant les éléments suivants dans la page des paramètres de mon plugin:

global $wp_admin_bar;
echo '<pre>'; print_r( $wp_admin_bar ); echo '</pre>';

Il est trop long de coller ici, de sorte que vous pouvez voir la liste complète sur ce lien Pastebin . Cependant, ci-dessous est un extrait de la façon dont cela commence. Comment puis-je obtenir toutes les valeurs qui sont dans [id] => et/ou [parent] =>? Il semble que je devrais passer par quelques niveaux de foreach?

WP_Admin_Bar Object (
    [nodes:WP_Admin_Bar:private] => Array (
            [user-actions] => stdClass Object (
                    [id] => user-actions
                    [title] => 
                    [parent] => my-account
                    [href] => 
                    [meta] => Array (
                            [class] => ab-submenu
                        )

                    [children] => Array (
                            [0] => stdClass Object (
                                    [id] => user-info
                                    [title] => Name
                                    [parent] => user-actions
                                    [href] => http://example.com/wp-admin/profile.php
                                    [meta] => Array (
                                            [tabindex] => -1
                                        )

                                    [children] => Array (
                                        )

                                    [type] => item
                                )

                            [1] => stdClass Object (
                                    [id] => edit-profile
                                    [title] => Edit My Profile
                                    [parent] => user-actions
                                    [href] => http://example.com/wp-admin/profile.php
                                    [meta] => Array (
                                        )

                                    [children] => Array (
                                        )

                                    [type] => item
                                )
and so on...
3

Il existe une action hook admin_bar_menu qui vous fournira un tableau d'éléments de menu de la barre d'administration.


add_action('admin_bar_menu', 'get_admin_bar_header_array');
public function get_admin_bar_header_array($admin_bar){
print_r($admin_bar);
}

:)

2
Syed Fakhar Abbas

Accrochez-vous dans l'action admin_bar_menu et récupérez les éléments de menu à l'aide de la méthode get_nodes(), car la liste des éléments est privée et n'est pas accessible directement:

add_action( 'admin_bar_menu', function( \WP_Admin_Bar $wp_admin_bar ) {

    $items = $wp_admin_bar->get_nodes();

    if ( ! $items )
        return;

    print '<pre>';

    foreach ( $items as $id => $item )
    {
        print "$id: " . print_r( $item, TRUE ) . "\n";
    }

    print '</pre>';
}, PHP_INT_MAX );
1
fuxia