it-swarm.com.de

Ist die neue WordPress 3.1 Admin-Leiste steckbar und wie kann ich sie erweitern?

Wie kann ich die Funktionen der WordPress 3.1-Administrationsleiste in meinen Plugins erweitern?

Ich suche nach bestimmten Hooks und Filtern, die zum Hinzufügen von Links oder anderen Funktionen zur Administrationsleiste verwendet werden können.

Ein gutes Beispiel für das, was bereits getan wurde, ist das Yoast WordPress SEO (Wordpress Plugin) .

alt text

Derzeit ist keine Dokumentation zum Erweitern der Administrationsleiste verfügbar. Laut The Codex gibt es zwei Filter, um es auszuschalten oder nicht anzuzeigen:

no_admin_bar() & show_admin_bar()

8
Chris_O

Das Plug-In von Yoast ist eigentlich ein sehr gutes Beispiel, wenn Sie nur Menüs hinzufügen möchten. Grundsätzlich ist die Administrationsleiste nur ein alternativer Satz von Links zu denselben Plug-in-Administrationsseiten, die Sie in der Seitenleiste haben. Um das SEO-Menü der obersten Ebene hinzuzufügen, führt Yoast die folgenden Schritte aus:

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

Dadurch wird der Administrationsleiste ein Menü mit dem Namen "wpseo-menu" hinzugefügt und Benutzer werden zum Dashboard des Plug-ins geleitet, wenn sie auf den Link klicken. Untergeordnete Links werden auf ähnliche Weise hinzugefügt:

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

Sie geben nur die "Eltern" des Menüs an, das Sie hinzufügen.

Dann können Sie so weit gehen, wie Sie möchten, $wp_admin_bar->add_menu() aufrufen und die entsprechenden Informationen angeben.


Als Referenz ist die Variable $wp_admin_bar eine Instanz der Klasse WP_Admin_Bar() in WordPress. Es hat verschiedene Methoden und Eigenschaften, aber die, die Sie hier am meisten interessieren, ist offensichtlich add_menu(). Diese Methode akzeptiert bestimmte Parameter:

  • title - default false
  • href - default false,
  • parent - default false - Übergibt den ID-Wert für ein Untermenü dieses Menüs
  • id - ist standardmäßig ein bereinigter Titelwert.
  • meta - default false - Array mit einer der folgenden Optionen: array( 'html' => '', 'class' => '', 'onclick' => '', target => '' );

Aber der Rest der Klasse WP_Admin_Bar()is ist pluggable. Es hängt nur davon ab, was genau Sie versuchen und wie Sie es tun möchten.

Siehe auch:

16
EAMann

kleines beispiel, ich hatte dies auch auf wp-hacker liste vor view tagen geschrieben

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

Laden Sie den nächtlichen Build herunter und überprüfen Sie diese beiden Dateien.

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

Die Klasse WP_Admin_Bar ist im Wesentlichen die 'API', während die Datei admin-bar.php sie verwendet, um die Standardleiste zu erstellen und eine Menge Hooks abzufeuern.

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

Das sind so ziemlich die Grundlagen - das ist alles, was ich von einem schnellen Blick auf mich selbst gesammelt habe (um ehrlich zu sein, ist es ein bisschen ärgerlich, dass admin_bar_menu die Instanz von WP_Admin_Bar nicht zurückgibt - ich hasse all diese Globals!)

7
TheDeadMedic