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) .
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()
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:
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:
wpseo_admin_bar()
WP_Admin_Bar()
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 );
Téléchargez la version nocturne et consultez ces deux fichiers.
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!)