Menü zur Wordpress Admin-Bar hinzufügen

Seit Version 3.1 zeigt Wordpress in der Normal-Ansicht der Webseite oben immer ein Administrations-Panel an, das einen schnellen, unkomplizierten Zugang zu den gängigsten Funktionen bietet ohne, dass man vorher in das Administrations-Backend wechseln muss.

Mit Wordpress-Actions kann man nun eigene Menüs zu diesem Panel hinzufügen. Solche Actions werden in der function.php Datei des eigenen Themes oder Plugins über die Wordpress-Funktion „add_action“ mit einer eigenen PHP-Funktion verknüpft.

Für ein neues Menü brauchen wir zwei solche Actions: „admin_bar_init“ und „admin_bar_menu“.

In folgendem Beispiel verknüpfe ich admin_bar_init mit der eigenen Funktion „my_admin_bar_init“. Dort filtere ich heraus, ob der Benutzer überhaupt Admin ist und ob das Panel überhaupt angezeigt wird. Erst wenn das zutrifft verknüpfe ich die zweite Action „admin_bar_menu“, sonst brauchen wir sie ja nicht.

Beim verknüpfen der „my_admin_bar_menu“ gibt es einen dritten Parameter - im Beispiel „500“ - dieser gibt die Position des Menüs im Panel an - man kann eigene Menüs also auch vorreihen:

<?php
	function my_admin_bar_init()
	{
		// Wenn der User kein Admin ist oder das Panel nicht gezeigt wird, brechen wir ab
		if (!is_super_admin() || !is_admin_bar_showing()) {
			return;
		}
 
		add_action('admin_bar_menu', 'my_admin_bar_menu', 500);
	}
	add_action('admin_bar_init', 'my_admin_bar_init');
 
	function my_admin_bar_menu()
	{
		global $wp_admin_bar;
 
		$wp_admin_bar->add_menu(array(
			'title' => 'Hauptmenüpunkt',
			'href' => 'http://www.example.com',
			'id' => 'my_admin_bar_menu' // Diese id brauchst du für die Untermenüpunkte
		));
 
		$wp_admin_bar->add_menu(array(
			'title' => 'Untermenüpunkt',
			'href' => 'http://www.example.com',
			'parent' => 'my_admin_bar_menu', // Für einen Untermenüpunkt gibst du hier die id das Hauptmenüpunkts an
			'meta' => array('target' => '_blank') // so kannst du HTML-Attribute zum Link hinzufügen
		));
	}
?>

In meiner PHP-Function hol ich mir mit global $wp_admin_bar das Menü-Objekt in die Funktion, sofern das Panel angezeigt wird, ist dieses Objekt vorhanden.

Zu diesem Objekt kann man jetzt mit der Methode add_menu() weitere Menü-Punkte hinzufügen. Dazu übergibt man der Methode als einzigen Parameter ein Array mit den notwendigen Angaben zum Menüpunkt.

Mit id und parent legt man dabei fest, ob es sich um einen Hauptmenüpunkt oder ein Untermenü handelt. Logischerweise gibt man als parent eines Untermenüpunktes die id des gewünschten Hauptmenüpunktes an.