web-dev-qa-db-fra.com

La nouvelle barre d’administration de WordPress 3.1 est-elle connectable et comment puis-je l’étendre?

Comment puis-je étendre les fonctions de la barre d'administration WordPress 3.1 dans mes plugins?

Je recherche des crochets et des filtres spécifiques à utiliser pour ajouter des liens ou d'autres fonctionnalités à la barre d'administration.

Un bon exemple de ce qui a déjà été fait est le Yoast WordPress SEO (Plugin Wordpress) .

alt text

Actuellement, il n'y a pas de documentation disponible sur l'extension de la barre d'administration. Selon Le Codex il y a deux filtres pour l'éteindre ou non:

no_admin_bar() & show_admin_bar()

8
Chris_O

Le plug-in de Yoast est en fait un très bon exemple si tout ce que vous voulez, c'est ajouter des menus. Fondamentalement, la barre d'administration n'est qu'un ensemble de liens alternatifs vers les mêmes pages d'administration de plug-ins que vous avez dans la barre latérale. Pour ajouter le menu SEO de niveau supérieur, Yoast procède comme suit:

$wp_admin_bar->add_menu( array( 'id' => 'wpseo-menu', 'title' => __( 'SEO' ), 'href' => get_admin_url('admin.php?page=wpseo_dashboard'), ) );

Cela ajoute un menu nommé "wpseo-menu" à la barre d'administration et dirige les utilisateurs vers le tableau de bord du plug-in lorsqu'ils cliquent sur le lien. Les liens enfants sont ajoutés de la même manière:

$wp_admin_bar->add_menu( array( 'parent' => 'wpseo-menu', 'id' => 'wpseo-kwresearch', 'title' => __( 'Keyword Research' ), '#', ) );

Vous spécifiez simplement le "parent" du menu que vous ajoutez.

Ensuite, vous pouvez aller aussi loin que nécessaire, en appelant $wp_admin_bar->add_menu() quand vous en avez besoin et en spécifiant les informations appropriées.


Pour référence, la variable $wp_admin_bar est une instance de la classe WP_Admin_Bar() dans WordPress. Il a plusieurs méthodes et propriétés différentes, mais celle qui vous intéresse le plus ici est, évidemment, add_menu(). Cette méthode accepte certains paramètres:

  • title- default false
  • href- default false,
  • parent- default false - transmet la valeur d'ID d'un sous-menu de ce menu
  • id- utilise par défaut une valeur de titre assainie.
  • meta- default false - tableau de l'une des options suivantes: array( 'html' => '', 'class' => '', 'onclick' => '', target => '' );

Mais le reste de la WP_Admin_Bar() classe est pluggable. Cela dépend de ce que vous essayez exactement de faire et de la façon dont vous voulez le faire.

Voir également:

16
EAMann

petit exemple, j'avais aussi écrit ceci sur la liste de wp-hackers avant de voir les jours

function wp_codex_search_form() {
    global $wp_admin_bar, $wpdb;

    if ( !is_super_admin() || !is_admin_bar_showing() )
        return;

    $codex_search = '<form target="_blank" method="get" action="http://wordpress.org/search/do-search.php" style="margin:2px 0 0;">
        <input type="text" onblur="this.value=(this.value==\'\') ? \'Search the Codex\' : this.value;" onfocus="this.value=(this.value==\'Search the Codex\') ? \'\' : this.value;" maxlength="100" value="Search the Codex" name="search" class="adminbar-input">
        <button type="submit" class="adminbar-button">
            <span>Go</span>
        </button>
    </form>';

    /* Add the main siteadmin menu item */
    $wp_admin_bar->add_menu( array( 'id' => 'codex_search', 'title' => 'Search Codex', 'href' => FALSE ) );
    $wp_admin_bar->add_menu( array( 'parent' => 'codex_search', 'title' => $codex_search, 'href' => FALSE ) );
}
add_action( 'admin_bar_menu', 'wp_codex_search_form', 1000 );
11
bueltge

Téléchargez la version nocturne et consultez ces deux fichiers.

  • wp-includes/admin-bar.php
  • wp-includes/class-wp-admin-bar.php

La classe WP_Admin_Bar est essentiellement l’API, tandis que le fichier admin-bar.php l’utilise pour créer la barre par défaut et déclencher une série de points d’accroché.

function my_admin_bar()
{
    global $wp_admin_bar;
    $wp_admin_bar->add_menu(array(
        'parent' => 'my-account', // optional
        'id'     => 'my-unique-id',
        'title'  => '',
        'href'   => ''
    ));
}
add_action('admin_bar_menu', 'my_admin_bar');

C’est un peu les bases - c’est tout ce que j’ai rassemblé moi-même d’un coup d’œil rapide (pour être honnête, c’est un peu embêtant, le hook admin_bar_menu ne renvoie pas l’instance de WP_Admin_Bar - je déteste tous ces globals!)

7
TheDeadMedic