La nuova barra di amministrazione di WordPress 3.1 è collegabile e come posso estenderla?


8

Come posso estendere le funzioni della barra di amministrazione di WordPress 3.1 nei miei plugin?

Sto cercando hook e filtri specifici da utilizzare per aggiungere collegamenti o altre funzionalità alla barra di amministrazione.

Un buon esempio di ciò che è già stato fatto è Yoast WordPress SEO (Wordpress Plugin) .

testo alternativo

Attualmente non è disponibile alcuna documentazione sull'estensione della barra di amministrazione. Secondo The Codex ci sono due filtri per disattivarlo o non mostrarlo:

no_admin_bar() & show_admin_bar()


3
Puoi non solo dare un'occhiata a come funziona il plug-in Yoast o il codice è un po 'astratto da dare un senso?
t31os,

1
D'accordo con t31os. Aiuta a ricercare la tua domanda prima di porre ... ;-)
Denis de Bernardy il

5
Veramente? Penso che questa sia una buona domanda. Praticamente a ogni domanda qui si può rispondere "facendo qualche ricerca". Ovviamente ho potuto scavare nel codice di Yoast e scoprire come lo ha fatto, ma com'è in questo momento non esiste alcuna documentazione sull'estensione della barra di amministrazione. Il plug-in SEO di Yoast WordPress è stato solo un esempio poiché sono sicuro che si può fare di più che aggiungere semplicemente collegamenti.
Chris_O,

3.1 è in versione beta, è meno probabile che esista documentazione per funzionalità che è soggetta a modifiche. Non fraintendetemi, sarei curioso di vedere alcuni esempi da solo in previsione di 3.1 ... (tendo a usare il ramo stabile poiché passo più tempo a supportare qualunque sia la maggior parte degli utenti) ... (o è in 3.0.2?)
t31os

Risposte:


16

Il plug-in di Yoast è in realtà un ottimo esempio se tutto ciò che vuoi fare è aggiungere menu. Fondamentalmente, la barra di amministrazione è solo un insieme alternativo di collegamenti alle stesse pagine di amministrazione del plug-in presenti nella barra laterale. Per aggiungere il menu SEO di livello superiore, Yoast procede come segue:

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

Ciò aggiunge un menu denominato "menu wpseo" alla barra di amministrazione e indirizza gli utenti alla dashboard del plug-in quando fanno clic sul collegamento. I collegamenti figlio vengono aggiunti in modo simile:

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

Devi solo specificare il "genitore" del menu che stai aggiungendo.

Quindi puoi approfondire quanto è necessario, chiamando $wp_admin_bar->add_menu()quando necessario e specificando le informazioni appropriate.


Per riferimento, la variabile $wp_admin_barè un'istanza della classe WP_Admin_Bar()all'interno di WordPress. Ha diversi metodi e proprietà, ma ovviamente quello a cui sei più interessato è add_menu(). Questo metodo accetta alcuni parametri:

  • titolo : impostazione predefinita false
  • href - default false,
  • parent - default false - passa il valore ID per un sottomenu di quel menu
  • id : il valore predefinito è un valore igienizzato.
  • meta - default false - array di una delle seguenti opzioni:array( 'html' => '', 'class' => '', 'onclick' => '', target => '' );

Ma il resto della WP_Admin_Bar()classe è collegabile. Dipende solo da cosa stai esattamente cercando di fare e da come vuoi farlo.

Guarda anche:


Ottima risposta Ho appena finito di guardare PHPXref.
Chris_O,

11

piccolo esempio, avevo scritto questo anche nell'elenco wp-hacker prima di visualizzare i giorni

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

7

Scarica la build notturna e controlla questi due file;

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

La classe WP_Admin_Barè essenzialmente l '"API", mentre il file la admin-bar.phputilizza per creare la barra di default e avviare un carico di hook.

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

Queste sono praticamente le basi - questo è tutto quello che ho raccolto da un semplice guardone (a dire il vero, è un po 'fastidioso che il gancio admin_bar_menunon riporti l'istanza di WP_Admin_Bar- odio tutte queste sfere!)


2
Quel fastidio sarebbe un buon motivo per aprire un biglietto su Trac in modo che possiamo rattopparlo per WP 3.1.1 ...
EAMann

2
Per il follow-up: TheDeadMedic ha aperto un ticket ed è stato incluso nel tempo per 3.1, quindi non è necessario leggere la variabile globale, verrà passata per riferimento come primo parametro.
Jan Fabry,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.