L'API delle impostazioni di WordPress, parte 2 sezioni, campi e impostazioni

Quando si tratta di sviluppare temi e plug-in di WordPress, ci sono diversi modi in cui gli sviluppatori creano i loro menu, opzioni e funzionalità di convalida. Il fatto è che c'è davvero un solo modo per farlo correttamente all'interno di WordPress: l'API delle impostazioni.

Questa serie intende essere la guida definitiva su come sfruttare le API di impostazioni di WordPress in modo da avere un unico punto di riferimento per lo sviluppo corretto di temi e plug-in.

Nel primo articolo di questa serie abbiamo esaminato l'API delle impostazioni e il motivo per cui è importante. Qui, inizieremo a immergerci nell'API e come sfruttare tutto ciò che offre.

Daremo un'occhiata alle unità fondamentali delle opzioni di WordPress - sezioni, campi e impostazioni - e come includerle nella Dashboard nativa di WordPress.


Su sezioni, campi e impostazioni

Prima di scrivere qualsiasi codice, è importante comprendere i tre componenti principali dell'API delle impostazioni di WordPress.

  1. campi sono le singole opzioni che compaiono sulle pagine del menu. I campi corrispondono a elementi reali sullo schermo. Cioè, un campo è gestito da una casella di testo, un pulsante di opzione, una casella di controllo, ecc. I campi rappresentano un valore memorizzato nel database di WordPress.
  2. sezioni sono un raggruppamento logico di campi. Ogni volta che lavori con più campi, probabilmente raggrupperai le opzioni correlate - Le sezioni rappresentano questo raggruppamento. Inoltre, se il tuo lavoro include più pagine di amministrazione, ciascuna sezione corrisponde spesso alla propria pagina di menu (sebbene sia possibile aggiungerle anche a sezioni esistenti).
  3. impostazioni sono registrati dopo aver definito entrambi i campi e le sezioni. Pensa a Impostazioni come una combinazione del campo e della sezione a cui appartiene.

A questo punto, non ti preoccupare se non sei ancora chiaro su nessuno dei componenti principali. Daremo un'occhiata approfondita a ciascun componente insieme al codice sorgente di esempio che lega tutto insieme.


Una sandbox per le nostre impostazioni

Per iniziare a programmare sull'API Impostazioni, impostiamo un tema di base che possa essere utilizzato in questo articolo e nel resto della serie. Tutto il codice sorgente è disponibile anche su GitHub.

Nella tua installazione locale di WordPress, accedi alla directory "temi" e crea una nuova directory vuota e chiamala "WordPress-Settings-Sandbox". Aggiungi i seguenti tre file:

  • style.css - Questo è il foglio di stile per il tema. Include tutte le meta informazioni per il tema. È richiesto da WordPress
  • index.php - Questo è il modello predefinito per il tema. All'inizio può essere vuoto. È richiesto da WordPress
  • functions.php - Qui è dove faremo gran parte del nostro lavoro. Lo riempiremo durante il tutorial

Aggiungi il seguente codice a style.css:

/ * Nome del tema: Impostazioni di WordPress URI di Sandbox Tema: IL TUO URI Descrizione: Un tema semplice utilizzato per mostrare l'API delle impostazioni di WordPress. Autore: IL TUO NOME Autore URI: IL TUO SITO WEB Versione: 0.1 Licenza: Copyright 2012 IL TUO NOME (IL TUO INDIRIZZO E-MAIL) Questo programma è software libero; è possibile ridistribuirlo e / o modificarlo secondo i termini della GNU General Public License, versione 2, pubblicata dalla Free Software Foundation. Questo programma è distribuito nella speranza che sia utile, ma SENZA ALCUNA GARANZIA; senza nemmeno la garanzia implicita di COMMERCIABILITÀ o IDONEITÀ PER UN PARTICOLARE SCOPO. Vedi la GNU General Public License per maggiori dettagli. Dovresti aver ricevuto una copia della GNU General Public License insieme a questo programma; in caso contrario, scrivere alla Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * /

Successivamente, aggiungi il seguente codice a index.php:

   La guida completa alle impostazioni API | Tema Sandbox   

Intestazione sandbox

Questo è il contenuto del tema.

© Tutti i diritti riservati.

Si noti che il markup sopra è straordinariamente semplice e lo faccio non consiglia di utilizzare questo come base per lo sviluppo del tema. È su misura per questa serie di articoli e fornisce semplicemente i mezzi con cui leggere i valori dall'API Impostazioni.

Nel Temi schermata di amministrazione, aggiorna la pagina e dovresti vedere apparire il nuovo tema Sandbox. Vai avanti e attivalo.

A questo punto, siamo pronti per iniziare.


Il nostro primo set di opzioni

Nota nel modello di indice sopra, abbiamo definito tre aree di contenuto specifiche: intestazione, contenuto e piè di pagina. Utilizzando l'API Impostazioni, creiamo una sezione "Generale" contenente tre campi, ognuno dei quali corrisponde a una delle regioni di contenuti specifici che abbiamo appena definito.

Prima di scrivere qualsiasi codice, trovo sempre utile elencare esattamente ciò che devo fare. In questo caso, dobbiamo fare quanto segue:

  • Definire una sezione che verrà utilizzata per raggruppare ciascun campo
  • Aggiungi tre campi, uno per ciascuna regione di contenuto, alla sezione definita sopra
  • Registra le impostazioni con l'API di WordPress.

Per evitare massicci blocchi di codice e assicurarci di coprire tutte le nostre basi, prenderemo ciascuno degli elementi sopra elencati punto per punto.

Creazione della sezione

Per trovare la nostra sezione "Generale" di opzioni, avremo bisogno di utilizzare la funzione add_settings_section dell'API Settings. Secondo il codice WordPress, add_settings_section richiede tre argomenti:

  • ID - Questo è l'identificatore univoco per questa particolare sezione. Si noti che questo è il valore che verrà utilizzato per registrare ciascun campo all'interno di questa sezione. Sentiti libero di chiamarlo come vuoi, ma ti consiglio di renderlo chiaro per motivi di leggibilità.
  • Titolo - Questo valore verrà visualizzato nella parte superiore della pagina nella Dashboard di WordPress quando gli utenti stanno lavorando con le opzioni.
  • Richiama - Questo è il nome di una funzione che definiremo che renderà il testo sullo schermo per la funzione. Può essere utilizzato per una varietà di funzionalità. Nel caso più semplice, può essere utilizzato per fornire una serie di istruzioni o descrizioni per la pagina delle opzioni.
  • Pagina - Questo valore è usato per dire a WordPress su quale pagina dovrebbero essere visualizzate le opzioni. In un articolo futuro, lo useremo per aggiungere opzioni alle nostre pagine personalizzate. Per ora, aggiungeremo questo all'esistente Opzioni generali pagina.

Con quello, andiamo avanti e definiamo la nostra sezione. Dai un'occhiata al seguente codice commentato. Stiamo aggiungendo questo al nostro file functions.php.

Una parola sui frammenti di codice in questa serie: non copiare e incollare semplicemente questo codice. Prenditi del tempo per leggere ogni riga, vedi come gli argomenti corrispondono a ciascuna funzione API che trattiamo e segui i commenti corrispondenti per assicurarti di capire cosa stiamo facendo:

Seleziona le aree di contenuto che desideri visualizzare.

'; // termina sandbox_general_options_callback?>

Ha senso? In generale, non sembra molto ma naviga verso il tuo impostazioni menu e fare clic su Generale. Scorri fino alla fine della pagina e dovresti vedere la tua nuova sezione di opzioni.

È possibile aggiungere questa sezione a qualsiasi pagina sotto il impostazioni menu. Nell'esempio precedente, abbiamo passato "generale" come ultimo parametro a add_settings_section, ma se desideri aggiungerlo a una pagina diversa, puoi fornire un titolo di pagina diverso. Ecco un riferimento per ciascuno dei impostazioni pagine e la loro chiave corrispondente:

  • Generale, "generale"
  • Scrivere, "scrivere"
  • Leggere, "leggere"
  • Discussione, "discussione"
  • Media, "media"
  • Privacy, "privacy"
  • Permalink, "permalink"

Aggiunta di campi

Ora che abbiamo definito una sezione, possiamo introdurre alcune opzioni. Ricorda che nel nostro modello di indice abbiamo definito tre elementi specifici del contenitore: intestazione, contenuto e piè di pagina.

Anche se introdurremo più opzioni nel corso di questa serie, oggi introdurremo un modo per attivare la visibilità di ciascuno degli elementi sopra.

Simile a quello che abbiamo fatto con la sezione impostazioni, mi piace elencare esattamente cosa dobbiamo fare prima di scrivere qualsiasi codice. Dal momento che stiamo per alternare ciascuna delle aree di contenuto ...

  • Avremo bisogno di tre opzioni: una per ogni area di contenuto
  • Dal momento che stiamo attivando la visibilità, possiamo usare una casella di controllo come nostro elemento di interfaccia

A questo punto, siamo pronti per introdurre il primo campo delle impostazioni. Per fare ciò, useremo la funzione add_settings_field. Questa funzione richiede sei parametri (quattro richiesti, due facoltativi). Sono come segue:

  • ID - L'ID del campo attuale. Questo sarà usato per salvare e recuperare il valore in tutto il tema. Raccomando di nominare questo qualcosa di significativo per migliorare la leggibilità del tuo codice.
  • Titolo - Questo valore applica un titolo all'opzione campo nella pagina di amministrazione. Questo dovrebbe essere chiaro in quanto verrà letto dagli utenti finali.
  • Richiama - Questo è il nome della funzione che viene utilizzata per rendere l'elemento dell'interfaccia reale con cui gli utenti interagiranno.
  • Pagina - Simile alla sezione che abbiamo delineato, questo parametro identifica su quale pagina deve risiedere questa opzione. Se stai introducendo solo una singola opzione, puoi aggiungerla a una pagina esistente piuttosto che a una sezione che hai definito.
  • Sezione - Questo si riferisce alla sezione che hai creato usando la funzione add_settings_section. Questo valore è l'ID che hai specificato durante la creazione della tua sezione. questo è un parametro opzionale.
  • argomenti - Questo è un array di argomenti che vengono passati alla funzione di callback. Questo è utile se ci sono informazioni aggiuntive da includere nel rendering dell'elemento opzionale. questo è un parametro opzionale.

Detto questo, andiamo avanti e definiamo il nostro primo campo di impostazione. Nello specifico, introdurremo un'opzione per attivare la visibilità dell'intestazione.

Per prima cosa, effettuiamo una chiamata a add_settings_field appena sotto la chiamata alla funzione add_settings_section nella funzione di inizializzazione che abbiamo scritto nella prima parte del tutorial. Controlla ogni riga e i commenti per ciascuna opzione:

// Successivamente, introdurremo i campi per attivare la visibilità degli elementi di contenuto. add_settings_field ('show_header', // ID utilizzato per identificare il campo in tutto il tema 'Intestazione', // L'etichetta a sinistra dell'elemento dell'interfaccia opzione 'sandbox_toggle_header_callback', // Il nome della funzione responsabile per il rendering dell'interfaccia opzione 'general', // La pagina in cui verrà visualizzata questa opzione 'general_settings_section', // Il nome della sezione a cui questo campo appartiene array (// L'array di argomenti da passare al callback. In questo caso, solo una descrizione. 'Attivare questa impostazione per visualizzare l'intestazione.'));

Successivamente, definiamo la richiamata a cui si fa riferimento nella funzione sopra. Questo callback è utilizzato per rendere la casella di controllo e la descrizione sulla pagina di amministrazione:

/ ** * Questa funzione esegue il rendering degli elementi dell'interfaccia per attivare la visibilità dell'elemento di intestazione. * * Accetta un array di argomenti e si aspetta che il primo elemento dell'array sia la descrizione * da visualizzare accanto alla casella di controllo. * / function sandbox_toggle_header_callback ($ args) // Nota l'ID e l'attributo name dell'elemento deve corrispondere a quello dell'ID nella chiamata a add_settings_field $ html = ''; // Qui, prenderemo il primo argomento dell'array e lo aggiungeremo a un'etichetta accanto alla casella di controllo $ html. = ''; echo $ html;  // termina sandbox_toggle_header_callback

Per quanto riguarda la casella di controllo, fai attenzione ai commenti, ma non preoccuparti troppo di alcuni degli attributi che non riconosci (come una chiamata alla funzione checked ()). Più avanti in questa serie, daremo un'occhiata a ciascun elemento di input e alle corrispondenti funzioni di aiuto.

A questo punto, il tuo file functions.php dovrebbe apparire così:

Seleziona le aree di contenuto che desideri visualizzare.

'; // end sandbox_general_options_callback / * ------------------------------------------- ----------------------------- * * Callback Field * ---------------- -------------------------------------------------- ------ * / / ** * Questa funzione esegue il rendering degli elementi dell'interfaccia per attivare la visibilità dell'elemento di intestazione. * * Accetta un array di argomenti e si aspetta che il primo elemento dell'array sia la descrizione * da visualizzare accanto alla casella di controllo. * / function sandbox_toggle_header_callback ($ args) // Nota l'ID e l'attributo name dell'elemento corrispondono a quello dell'ID nella chiamata a add_settings_field $ html = ''; // Qui, prenderemo il primo argomento dell'array e lo aggiungeremo a un'etichetta accanto alla casella di controllo $ html. = ''; echo $ html; // termina sandbox_toggle_header_callback?>

A questo punto, aggiorna il impostazioni generali pagina. Dovresti vedere la tua casella di controllo con l'etichetta "Intestazione" e una descrizione accanto alla casella di controllo.

Sfortunatamente, in realtà non sta ancora salvando il valore nel database.

Registrazione delle nostre impostazioni

Per fare in modo che i nostri campi salvino effettivamente nel database, dobbiamo registrarli con WordPress. Fare ciò è relativamente facile: dobbiamo solo sfruttare la funzione register_setting.

Questa funzione accetta tre argomenti (due richiesti, uno facoltativo):

  • Gruppo di opzioni - Questo è in realtà il nome del gruppo di opzioni. Questo può essere un gruppo esistente di opzioni fornite da WordPress o un ID che abbiamo specificato durante la creazione della nostra sezione delle impostazioni. Questo argomento è richiesto.
  • Nome opzione - Questo è l'ID del campo che stiamo registrando. Nel nostro caso, registriamo solo un singolo campo, ma se registrassimo più campi, dovremmo chiamare questa funzione per ogni campo che stiamo registrando. Vedremo di più su questo in un momento. Questo argomento è richiesto.
  • Richiama - Questo argomento richiede il nome di una funzione che verrà chiamata prima di salvare i dati nel database. Questo argomento non rientra negli scopi di questo articolo, ma lo visiteremo prima che la serie sia finita. Questo argomento è facoltativo.

A questo punto, registriamo l'impostazione che abbiamo appena creato. Dai un'occhiata al codice qui sotto. Aggiungi questa riga di codice direttamente sotto la chiamata a add_settings_field nella funzione di inizializzazione definita in precedenza nell'articolo. È indubbiamente il modo più semplice per seguire tutti i frammenti di questo articolo:

// Infine, registriamo i campi con WordPress register_setting ('general', 'show_header');

Provalo: seleziona la casella di controllo, fai clic su "Salva modifiche" e nota che quando la pagina si aggiorna, l'opzione è cambiata. Deseleziona la casella di controllo, salva e guardala salvata.

Abbastanza facile, giusto?

Aggiunta delle due opzioni finali

Dobbiamo ancora introdurre le opzioni per attivare la visibilità dell'area del contenuto e dell'area del piè di pagina. È quasi esattamente lo stesso di come configuriamo l'opzione per attivare l'intestazione.

Per prima cosa, definiamo il campo per la visualizzazione dell'area del contenuto. Questo andrà sotto la prima chiamata a add_settings_field:

add_settings_field ('show_content', 'Content', 'sandbox_toggle_content_callback', 'general', 'general_settings_section', array ('Attiva questa impostazione per visualizzare il contenuto.'));

E configuriamo la funzione di callback:

function sandbox_toggle_content_callback ($ args) $ html = ''; $ html. = ''; echo $ html;  // end sandbox_toggle_content_callback

Successivamente, definiamo il campo per la visualizzazione dell'area del footer:

add_settings_field ('show_footer', 'Footer', 'sandbox_toggle_footer_callback', 'general', 'general_settings_section', array ('Attiva questa impostazione per visualizzare il piè di pagina.'));

E imposta anche la callback per questo campo:

function sandbox_toggle_footer_callback ($ args) $ html = ''; $ html. = ''; echo $ html;  // end sandbox_toggle_footer_callback

Infine, registriamo questi due nuovi campi con WordPress. Queste due chiamate di funzione si trovano nella parte inferiore della funzione di inizializzazione definita in precedenza nell'articolo.

register_setting ('general', 'show_content'); register_setting ('general', 'show_footer');

La versione finale di functions.php dovrebbe apparire così:

Seleziona le aree di contenuto che desideri visualizzare.

'; // end sandbox_general_options_callback / * ------------------------------------------- ----------------------------- * * Callback Field * ---------------- -------------------------------------------------- ------ * / / ** * Questa funzione esegue il rendering degli elementi dell'interfaccia per attivare la visibilità dell'elemento di intestazione. * * Accetta un array di argomenti e si aspetta che il primo elemento dell'array sia la descrizione * da visualizzare accanto alla casella di controllo. * / function sandbox_toggle_header_callback ($ args) // Nota l'ID e l'attributo name dell'elemento corrispondono a quello dell'ID nella chiamata a add_settings_field $ html = ''; // Qui, prenderemo il primo argomento dell'array e lo aggiungeremo a un'etichetta accanto alla casella di controllo $ html. = ''; echo $ html; // end sandbox_toggle_header_callback function sandbox_toggle_content_callback ($ args) $ html = ''; $ html. = ''; echo $ html; // end sandbox_toggle_content_callback function sandbox_toggle_footer_callback ($ args) $ html = ''; $ html. = ''; echo $ html; // termina sandbox_toggle_footer_callback?>

Ora aggiorna il impostazioni generali pagina e noti che hai tutte e tre le caselle di controllo completamente funzionali.


Leggere l'API

A cosa servono le opzioni se non possiamo sfruttarle nel nostro tema o nel nostro plugin? Dobbiamo essere in grado di leggere i valori per gestire correttamente le nostre nuove opzioni.

Per fare ciò, dobbiamo usare la funzione get_option. Questa funzione accetta due argomenti (uno richiesto, uno facoltativo):

  • ID opzione - Questo argomento è l'ID del campo per il valore che stai tentando di recuperare. Questo argomento è richiesto.
  • Opzione predefinita - Questo è il valore che la funzione restituirà se la funzione restituisce un valore vuoto (come nel caso in cui l'opzione non viene trovata nel database). Questo argomento è facoltativo.

Innanzitutto, proviamo ad attivare la visibilità dell'intestazione. Nel modello di indice creato in precedenza in questo articolo, individuare l'elemento con l'ID dell'intestazione. Dovrebbe sembrare come questo:

Intestazione sandbox

Quindi, effettuiamo una chiamata a get_option nel contesto di un condizionale. Se il condizionale viene valutato su true (ovvero, l'opzione è stata verificata sul file impostazioni generali pagina), quindi verrà visualizzato l'elemento; altrimenti, l'elemento non verrà visualizzato.

 

Intestazione sandbox

Dopo di ciò, spera nel impostazioni generali pagina, selezionare l'opzione per nascondere l'elemento dell'intestazione e aggiornare la pagina iniziale. L'elemento di intestazione non dovrebbe più apparire.

A questo punto, si tratta semplicemente di ripetere il processo per l'elemento contenuto e il piè di pagina. Abbiamo bisogno di avvolgere il contenuto e gli elementi del piè di pagina con i condizionali che valutano il risultato delle chiamate get_option.

Guarda:

 

Questo è il contenuto del tema.

© Tutti i diritti riservati.

Rivisitare il impostazioni generali pagina, attiva ogni casella di controllo e aggiorna la pagina del tema. I tuoi elementi dovrebbero alternarsi indipendentemente l'uno dall'altro.


Successivo, pagine di menu

Questo è tutto, per ora! Abbiamo dato un'occhiata a tutte le funzioni richieste per l'introduzione di nuove sezioni, campi e impostazioni in WordPress. Certo, c'è molto altro da coprire.

Nel prossimo articolo, daremo un'occhiata a come aggiungere voci di menu personalizzate al menu di WordPress, e come possiamo introdurre le nostre pagine nel Dashboard di WordPress.


Risorse correlate

Abbiamo coperto molto materiale in questo articolo. Ecco un riferimento per tutto ciò che abbiamo usato in questo articolo.

  • Introduzione all'API Impostazioni
  • add_settings_section
  • add_settings_field
  • register_setting
  • get_option
  • Esempio di lavoro su GitHub