A questo punto, abbiamo imparato perché l'API delle impostazioni è importante, abbiamo imparato tutto su sezioni, campi e impostazioni e abbiamo persino impostato un tema Sandbox che stiamo utilizzando per sviluppare funzionalità mentre esploriamo l'API.
In questo articolo, daremo un'occhiata a come possiamo interfacciarci con il sistema di menu di WordPress. È importante notare che questo non è in realtà una parte dell'API Settings, ma è così strettamente correlato che dovremmo familiarizzare con come usarlo.
Poiché i nostri temi e / o plugin diventano più complessi, abbiamo bisogno di conoscere tutti i vari modi in cui possiamo includerli nel Dashboard di WordPress. In questo articolo, daremo un'occhiata alle varie funzioni del menu di WordPress, quando usarle, quando evitarle e le situazioni alle quali ogni funzione si presta meglio.
WordPress offre quattro diversi modi per includere i nostri menu. Di seguito, daremo un'occhiata a ciascun menu, i parametri che ciascuno accetta e gli esempi di codice su come utilizzarli durante i progetti. Il nostro obiettivo è quello di sviluppare una chiara comprensione di come funziona l'API in quanto può gettare le basi per il nostro lavoro futuro.
Le pagine di menu si riferiscono alle voci di menu che vedi quando accedi per la prima volta a WordPress. Cioè, sono le opzioni disponibili nel menu di sinistra che possono contenere un elenco di pagine di sottomenu.
Per introdurre la propria pagina di menu nella Dashboard di WordPress, si utilizza la funzione add_menu_page.
Daremo un'occhiata a un esempio pratico in un momento, ma prima esaminiamo la funzione: accetta sette argomenti (cinque richiesti, due facoltativi):
Diamo un'occhiata a un esempio. Trova functions.php nella sandbox di WordPress Settings e aggiungi le seguenti due funzioni:
function sandbox_create_menu_page () add_action ('admin_menu', 'sandbox_create_menu_page'); function sandbox_menu_page_display ()
Tieni presente che stiamo utilizzando il hook admin_menu per registrare la nostra voce di menu. Questa particolare funzione si attiva subito dopo aver posizionato il menu di amministrazione di base, quindi desideri registrare qui il tuo menu in modo che WordPress lo visualizzi mentre visualizzi il resto dei menu.
Quindi, impostiamo la voce di menu di base. In linea con gli articoli precedenti di questa serie, ecco cosa abbiamo intenzione di fare:
Abbastanza facile, giusto? Andiamo avanti e aggiungere il nostro menu. Ancora una volta, non copiare e incollare semplicemente questo codice. Leggi, osserva i commenti e assicurati di comprendere appieno cosa stiamo facendo:
function sandbox_create_menu_page () add_menu_page ('Sandbox Options', // Il titolo da visualizzare sulla pagina corrispondente per questo menu 'Sandbox', // Il testo da visualizzare per questa voce di menu effettiva 'administrator', // Che tipo degli utenti possono vedere questo menu 'sandbox', // L'ID univoco - cioè lo slug - per questa voce di menu 'sandbox_menu_page_display', // Il nome della funzione da chiamare quando si esegue il rendering del menu per questa pagina "); // end sandbox_create_menu_page add_action ('admin_menu', 'sandbox_create_menu_page');
Ora, aggiorna il tuo menu di amministrazione di WordPress e dovresti vedere una nuova voce di menu. Quando fai clic su di esso, dovresti vedere apparire una pagina vuota.
Ovviamente, questo non è molto funzionale. Escludiamo la funzione di callback definita in precedenza per poterla visualizzare qualcosa sullo schermo:
function sandbox_menu_page_display () // Crea un'intestazione nel contenitore "wrap" predefinito di WordPress $ html = ''; $ html. = ''; // Invia il markup al browser echo $ html; // termina sandbox_menu_page_displaysandbox
'; $ html. = '
La versione finale del tuo codice dovrebbe apparire in questo modo:
/ ** * Aggiunge un nuovo menu di primo livello nella parte inferiore del menu di amministrazione di WordPress. * / function sandbox_create_menu_page () add_menu_page ('Sandbox Options', // Il titolo da visualizzare sulla pagina corrispondente per questo menu 'Sandbox', // Il testo da visualizzare per questa voce di menu 'amministratore', // Quale tipo di utenti può vedere questo menu 'sandbox', // L'ID univoco - cioè lo slug - per questa voce di menu 'sandbox_menu_page_display', // Il nome della funzione da chiamare quando si esegue il rendering del menu per questa pagina ") ; // fine sandbox_create_menu_page add_action ('admin_menu', 'sandbox_create_menu_page'); / ** * Rende la visualizzazione di base della pagina del menu per il tema. * / function sandbox_menu_page_display () // Crea un'intestazione nel WordPress predefinito ' avvolgere 'contenitore $ html =''; $ html. = ''; // Invia il markup al browser echo $ html; // termina sandbox_menu_page_displaysandbox
'; $ html. = '
Oltre a utilizzare effettivamente la funzione add_menu_page, forse la cosa più delicata è che, in WordPress, ogni voce di menu ha una pagina menu corrispondente. Daremo un'occhiata a questo in modo più approfondito in tutta la serie, ma è importante notare ora mentre iniziamo ad esplorare ciascuno dei vari tipi di menu.
Anche se questo è in gran parte incompleto, lo aggiungeremo a tutto il resto di questo articolo e al resto del tutorial.
Una nota sul posizionamento: Molti sviluppatori considerano l'utilizzo dell'argomento position come una cattiva etichetta, poiché mescola l'esperienza utente predefinita con WordPress. Inoltre, se si definisce una posizione e un altro tema, plugin o funzione utilizza la stessa posizione, una delle voci di menu può essere sovrascritta.
I sottomenu sono come i menu con l'eccezione che appartengono a un altro menu: hanno un genitore. Quindi, ovviamente, non è possibile creare un sottomenu senza prima creare una voce di menu. Naturalmente, come abbiamo visto nell'ultimo articolo, gli elementi di sottomenu possono essere introdotti a voci di menu esistenti, non solo voci di menu personalizzate.
In questo articolo, introdurremo una pagina di sottomenu nella nostra voce di menu personalizzata. Ma prima di farlo, diamo un'occhiata alla funzione add_submenu_page e ai parametri che accetta:
Se si desidera aggiungere una voce di menu a uno dei menu esistenti, fare riferimento alla tabella dell'articolo precedente.
Iniziamo registrando un sottomenu per il menu esistente sopra. Vogliamo fare quanto segue:
Controlla il seguente codice: lo aggiungeremo direttamente sotto la nostra chiamata a add_menu_page:
add_submenu_page ('sandbox', // Registra questo sottomenu con il menu definito sopra 'Opzioni Sandbox', // Il testo sul display nel browser quando questa voce di menu è attiva 'Opzioni', // Il testo per questa voce di menu ' amministratore ', // Quale tipo di utente può vedere questo menu' sandbox_options ', // L'ID univoco - lo slug - per questa voce di menu' sandbox_options_display '// La funzione utilizzata per visualizzare il menu di questa pagina sullo schermo);
Non dimenticare di definire il callback, anche se è vuoto. Cioè, non dimenticare di aggiungere questa funzione al tuo file (aggiungeremo di più per un momento):
function sandbox_options_display () // end sandbox_options_display
Quando aggiorni il tuo browser, dovresti vedere ora Due sottomenu direttamente sotto il menu "Sandbox". Si noti che WordPress crea un elemento di sottomenu da solo - è una voce di sottomenu che corrisponde alla voce di menu e la funzione di callback definita. Il secondo è la nuova opzione di sottomenu che abbiamo appena definito, anche se non rende alcun contenuto.
Per risolvere il problema, andiamo avanti e introduciamo una pagina di base. Aggiorna la funzione di richiamata del sottomenu per assomigliare a questa:
function sandbox_options_display () // Crea un'intestazione nel contenitore "wrap" predefinito di WordPress $ html = ''; $ html. = ''; // Invia il markup al browser echo $ html; // termina sandbox_options_displayOpzioni sandbox
'; $ html. = '
Aggiorna di nuovo il browser e dovresti visualizzare un titolo di pagina di base quando selezioni il nuovo Opzioni voce del sottomenu.
Sebbene ciò non sia necessario, si noti che è possibile avere effettivamente la voce di menu principale e il Opzioni la voce di menu si riferisce allo stesso contenuto - è sufficiente aggiornare la funzione di richiamata nella funzione ad_menu_page al sandbox_options_display
funzione che abbiamo appena definito.
Se stai sviluppando un plug-in per WordPress, ci sono diversi modi in cui il tuo prodotto può interfacciarsi con la piattaforma.
In particolare, il tuo plugin ...
Per semplificare agli sviluppatori di plug-in di includere le loro opzioni nei menu WordPress esistenti, l'API di WordPress offre la seguente funzione: add_plugins_page.
Ma aspetta. Se hai seguito gli esempi di cui sopra, probabilmente avrai notato che non sembra esserci alcuna differenza visibile tra add_plugins_page e add_submenu_page. Hai ragione. add_plugins_page offre la stessa funzionalità di add_submenu_page, ma ci sono due differenze principali:
Sebbene tu possa certamente usare add_submenu_page per raggiungere lo stesso obiettivo, sono sempre un fan dell'uso di funzioni intese per uno specifico caso d'uso anche se esiste un'altra funzione API che fa lo stesso. Quando lo fai, stai dimostrando che stai utilizzando l'API come previsto dagli sviluppatori e stai rendendo il tuo codice un po 'più coeso in quanto la tua base di codice è più strettamente allineata con il modo in cui interagisce con la piattaforma principale.
Lo sviluppo di plugin non rientra nell'ambito di questa serie particolare, ma non è del tutto irrilevante. Sebbene non vengano apportate modifiche al nostro tema Sandbox, desidero fornire un semplice esempio che mostri come utilizzare questa particolare funzione.
Innanzitutto, esaminiamo gli argomenti che add_plugins_page accetta:
Ecco un semplice esempio che dimostra esattamente come usarlo. Nota che puoi includerlo nel tuo file functions.php, ma lo è non parte del tema Sandbox su cui stiamo lavorando e dovrebbe invece essere usato nel contesto di un plugin.
Per prima cosa, configura la chiamata alla funzione API - nota che questo utilizza l'hook admin_menu:
function sandbox_example_plugin_menu () add_plugins_page ('Sandbox Plugin', // Il titolo da visualizzare nella finestra del browser per questa pagina. 'Sandbox Plugin', // Il testo da visualizzare per questa voce di menu 'administrator', // Which il tipo di utenti può vedere questa voce di menu 'sandbox_plugin_options', // L'ID univoco - ovvero lo slug - per questa voce di menu 'sandbox_plugin_display' // Il nome della funzione da chiamare quando si esegue il rendering della pagina per questo menu); // fine sandbox_example_plugin_menu add_action ('admin_menu', 'sandbox_example_plugin_menu');
Quindi, imposta la funzione che renderizza la visualizzazione del plugin:
function sandbox_plugin_display () // Crea un'intestazione nel contenitore "wrap" predefinito di WordPress $ html = ''; $ html. = ''; // Invia il markup al browser echo $ html; // termina sandbox_plugin_displayOpzioni del plugin Sandbox
'; $ html. = 'Al momento non ci sono opzioni. Questo è solo per scopi dimostrativi.
'; $ html. = '
Aggiorna il tuo WordPress Dashboard, passa con il mouse sopra il plugin menu e dovresti notare una nuova voce di menu. Non male, eh?
La versione finale del codice dovrebbe apparire così:
/ ** * Questa funzione introduce un'opzione di menu a tema singolo nel menu 'Plugin' di WordPress *. * / function sandbox_example_plugin_menu () add_plugins_page ('Sandbox Plugin', // Il titolo da visualizzare nella finestra del browser per questa pagina. 'Sandbox Plugin', // Il testo da visualizzare per questa voce di menu 'administrator', / / Quale tipo di utenti può vedere questa voce di menu 'sandbox_plugin_options', // L'ID univoco - cioè lo slug - per questa voce di menu 'sandbox_plugin_display' // Il nome della funzione da chiamare quando si esegue il rendering della pagina per questo menu) ; // fine sandbox_example_theme_menu add_action ('admin_menu', 'sandbox_example_plugin_menu'); / ** * Esegue il rendering di una pagina semplice da visualizzare per il menu dei temi definito sopra. * / function sandbox_plugin_display () // Crea un'intestazione nel contenitore "wrap" predefinito di WordPress $ html = ''; $ html. = ''; // Invia il markup al browser echo $ html; // termina sandbox_plugin_displayOpzioni del plugin Sandbox
'; $ html. = 'Al momento non ci sono opzioni. Questo è solo per scopi dimostrativi.
'; $ html. = '
Ancora una volta, questa funzione non farà parte del nostro tema Sandbox perché è orientata più verso lo sviluppo di plugin; tuttavia, vale la pena coprire per quelli di voi che sfrutteranno l'API Settings nello sforzo di sviluppo del plugin.
Proprio come con i plugin, WordPress fornisce una funzione API per l'introduzione di menu specifici per temi. È molto simile alla funzione del menu plugin in quanto fornisce un altro modo per introdurre un sottomenu nei menu esistenti. La differenza principale è che il sottomenu è aggiunto al Aspetto menu.
Come nell'esempio di plug-in riportato in precedenza in questo articolo, daremo un'occhiata a come possiamo utilizzare questa funzione, ma non la includeremo nel nostro tema Sandbox. Questo è inteso semplicemente per dimostrare come utilizzare la funzione nel caso in cui si opta per seguire questa strada nel proprio lavoro personale.
Innanzitutto, esamineremo gli argomenti che add_theme_page accetta. Noterai che sono proprio come quelli richiesti per il menu del plugin e molto simili alle funzioni del sottomenu che abbiamo delineato in precedenza:
add_theme_page accetta i seguenti argomenti:
Come con le altre funzioni, creeremo un paio di funzioni di esempio che mostrano come includere questo nel tuo progetto. Si noti che la chiamata a add_theme_page può essere aggiunta a functions.php e, a differenza delle chiamate a add_plugin_page, dovrebbero risieda qui quando sviluppi il tuo tema.
Innanzitutto, la chiamata per impostare la voce di menu:
function sandbox_example_theme_menu () add_theme_page ('Sandbox Theme', // Il titolo da visualizzare nella finestra del browser per questa pagina. 'Sandbox Theme', // Il testo da visualizzare per questa voce di menu 'administrator', // Which il tipo di utenti può vedere questa voce di menu 'sandbox_theme_options', // L'ID univoco - ovvero lo slug - per questa voce di menu 'sandbox_theme_display' // Il nome della funzione da chiamare quando si esegue il rendering della pagina per questo menu); // fine sandbox_example_theme_menu add_action ('admin_menu', 'sandbox_example_theme_menu');
Successivamente, configureremo una funzione per il rendering della pagina delle opzioni:
function sandbox_theme_display () // Crea un'intestazione nel contenitore "wrap" predefinito di WordPress $ html = ''; $ html. = ''; // Invia il markup al browser echo $ html; // termina sandbox_theme_displayOpzioni del tema Sandbox
'; $ html. = 'Al momento non ci sono opzioni. Questo è solo per scopi dimostrativi.
'; $ html. = '
Ora aggiorna il WordPress Dashboard, passa con il mouse sopra il Aspetto menu e dovresti vedere la tua nuova voce di menu. Semplice!
La versione finale del codice dovrebbe apparire così:
/ ** * Questa funzione introduce un'opzione di menu a tema singolo nel menu 'Aspetto' di WordPress *. * / function sandbox_example_theme_menu () add_theme_page ('Sandbox Theme', // Il titolo da visualizzare nella finestra del browser per questa pagina. 'Sandbox Theme', // Il testo da visualizzare per questa voce di menu 'administrator', / / Quale tipo di utenti può vedere questa voce di menu 'sandbox_theme_options', // L'ID univoco - ovvero lo slug - per questa voce di menu 'sandbox_theme_display' // Il nome della funzione da chiamare quando si esegue il rendering della pagina per questo menu) ; // fine sandbox_example_theme_menu add_action ('admin_menu', 'sandbox_example_theme_menu'); / ** * Esegue il rendering di una pagina semplice da visualizzare per il menu dei temi definito sopra. * / function sandbox_theme_display () // Crea un'intestazione nel contenitore "wrap" predefinito di WordPress $ html = ''; $ html. = ''; // Invia il markup al browser echo $ html; // termina sandbox_theme_displayOpzioni del tema Sandbox
'; $ html. = 'Al momento non ci sono opzioni. Questo è solo per scopi dimostrativi.
'; $ html. = '
Per quelli di voi che sono interessati allo sviluppo di temi più avanzati, probabilmente avete considerato i vari modi di implementare più pagine di opzioni per il tema.
Da una parte, possiamo aggiungere più sottomenu a un menu di livello superiore, ma lì è un'alternativa: navigazione a schede. Questo si presta bene quando vuoi introdurre opzioni per il Aspetto menu e non aggiungere ancora un'altra voce di menu alla Dashboard di WordPress. Discuteremo di questo in modo più approfondito nel prossimo articolo.
Abbiamo esaminato ciascuno dei quattro modi principali per introdurre le nostre pagine di opzioni in WordPress. Sebbene queste funzioni non facciano specificamente parte dell'API Settings, è importante discuterne perché lavorano così strettamente in congiunzione con esso.
Ma conoscere queste funzioni è solo la metà. Come sviluppatore responsabile per l'integrazione e l'organizzazione delle impostazioni, è importante sapere quando utilizzare ciascuna delle varie funzioni nel loro contesto appropriato.
Sebbene non ci sia una risposta in argento per quando utilizzare ciascuna funzione, ecco alcune linee guida da considerare quando si lavora su funzioni, plug-in e / o temi personalizzati:
Una parola sui menu personalizzati: Sebbene WordPress ci dia la possibilità di aggiungere i nostri menu di livello superiore, aggiungere a qualsiasi menu esistente e generalmente ci dà la possibilità di fare ciò che vogliamo con la configurazione predefinita, una parte della comunità aggrotta le sopracciglia su questo. Ritengono che la funzionalità personalizzata non dovrebbe interferire con alcuni menu principali. Anche se in definitiva dipende da te, implementa il tuo lavoro con discernimento - le probabilità sono, poche cose che stai facendo sono più importanti della funzionalità principale di WordPress, quindi non mettere il tuo lavoro al di sopra di quello.
Nel prossimo articolo, applicheremo un po 'di ciò che abbiamo imparato sui menu e inizieremo a introdurre le pagine delle opzioni per il nostro tema Sandbox.
Oltre ad aggiungere pagine di menu, daremo anche un'occhiata alla navigazione a schede e a come possiamo implementarla per funzionare insieme alle nostre pagine di menu.
Nel frattempo, esamina i precedenti articoli di questa serie e non dimenticare di eseguire il checkout della versione corrente di Sandbox delle impostazioni di WordPress su GitHub.
Abbiamo coperto un bel po 'di risorse in questo articolo. Ecco un riassunto di tutto ciò che abbiamo usato: