Come lavorare con i metadati di WordPress Post

Nel primo post di questa serie, ho dato una panoramica di tutti i vari tipi di metadati offerti da WordPress, dove è conservato, e di cosa tratteremo in questa serie. 

Inoltre, ho definito cosa sono i metadati; il suo ruolo all'interno di WordPress e quanto è rilevante per noi come sviluppatori. Ma l'introduzione doveva essere proprio questo: un sondaggio su ciò che copriremo per il resto di questa serie.

A partire da questo post, inizieremo a esplorare l'API di WordPress Post Meta per capire perché è utile, cosa possiamo fare con esso e come sfruttare i metodi offerti tramite l'applicazione WordPress.

Un disclaimer per tutti

Innanzitutto, se sei uno sviluppatore avanzato, non è probabile che questa serie di tutorial ti sarà di grande aiuto. Piuttosto, è orientato più verso coloro che hanno lavorato un po 'con i temi, forse modificato un po' il codice del plugin, e sono pronti a fare un ulteriore passo aggiungendo alcune informazioni extra ai post (o ai tipi di post) che compongono il loro progetto.

In secondo luogo, si noti che gli esempi di codice in questo tutorial sono nonper l'uso in un ambiente di produzione. Invece, il codice che stiamo andando a guardare non è pensato per essere usato ovunque che chiunque abbia accesso pubblico al sito.

In questo momento, ho intenzione di coprire le tecniche più avanzate per questo argomento, dopo aver lavorato a questa serie. Ma per ora ci limiteremo a lavorare con l'API.

Perché, però? Qual è il ritardo nella copertura di ulteriori informazioni? In poche parole, ha a che fare con la sicurezza del sito web. Nello specifico, ogni volta che scriviamo informazioni nel database, dobbiamo presumere che i dati non siano in un formato sicuro per noi da memorizzare; dobbiamo disinfettare i dati.

Esiste un insieme completamente diverso di API per la disinfezione dei dati che dobbiamo esplorare e che funzionerà in combinazione con le API dei metadati, ma questo non è il tutorial per farlo.

Lo so, può sembrare un po 'frustrante parlare di queste API senza essere in grado di sfruttarle. Ricorda, tuttavia, questo è pensato per essere un'introduzione all'API. Le esercitazioni dovrebbero fornire informazioni sufficienti per iniziare a lavorare con i metadati dei post sul tuo computer, ma dovrebbero anche lasciare abbastanza domande tali da consentirci di approfondire l'argomento in una futura serie di articoli.

Detto ciò, andiamo avanti e iniziamo con l'API Meta di Post WordPress. E sii avvisato: questo è un lungo tutorial.

Un'introduzione all'API

Prima di esaminare il codice, è importante assicurarsi di disporre degli strumenti necessari per esplorare il database su cui è in esecuzione l'installazione di WordPress. Alcuni degli strumenti disponibili includono:

  • phpMyAdmin
  • Sequel Pro
  • MySQL Workbench
  • Adminer

Ma sentiti libero di usare quello che ti piace di più. Finché puoi visualizzare i dati nel database, sei pronto per partire.

Quindi, capiamo come WordPress definisce i metadati dei post. Secondo il codice:

WordPress ha la capacità di consentire agli autori dei post di assegnare campi personalizzati a un post. Questa informazione extra arbitraria è conosciuta come meta-dati.

I meta-dati sono gestiti con coppie chiave / valore. La chiave è il nome dell'elemento meta-dati. Il valore è l'informazione che apparirà nell'elenco dei meta-dati su ogni singolo post a cui l'informazione è associata.

In termini più semplici, WordPress ci consente di scrivere informazioni personalizzate nel database, associarlo a qualsiasi post che desideriamo e quindi recuperarlo secondo necessità. Inoltre, le informazioni vengono memorizzate utilizzando coppie chiave / valore univoche.

Scrivere i nostri metadati

Se questo ti sembra estraneo, non preoccuparti nemmeno di ciò. L'idea è che per ogni valore che memorizzi, è legato a una chiave univoca (molto simile a una maniglia della porta ha una chiave univoca per sbloccarla). 

La chiave è come possiamo recuperare il valore dal post. Ma questo solleva una domanda: cosa succede se un post contiene più parti di metadati associati? Cioè, se un dato post può avere più pezzi di metadata memorizzati al suo fianco, come possiamo recuperare metadati unici?

Come vedremo quando inizieremo a guardare alcuni dei seguenti codici di esempio, oltre a utilizzare la chiave utilizzata per la memorizzazione dei dati, dobbiamo anche passare l'ID univoco del post alla funzione.

Nulla funziona meglio di vederlo in azione, però. Quindi supponendo che tu abbia WordPress configurato sul tuo computer locale e che tu stia bene con il montaggio functions.php nel cuore del tema predefinito, iniziamo.

Per riferimento

Userò i seguenti strumenti:

  • WordPress 4.4
  • Il tema di Twentysixteen
  • Atomo
  • Sequel Pro

La cosa più importante è che esegui sia WordPress che il tema sopra menzionato.

Infine, se sei più a tuo agio con un altro front-end IDE e database, è tutto a posto.

Abbiamo incluso molte informazioni nell'introduzione di questo articolo, ma ci tornerà utile non appena inizieremo a guardare non solo l'API di Post Meta, ma anche le altre API. Quindi tieni questo a mente. Mi riferirò a questo particolare articolo anche in articoli futuri.

Analizziamo l'API.

Una nota molto importante

Il modo in cui incorporeremo il codice è non il modo professionale di apportare modifiche al tema, implementare questa funzionalità o interfacciarsi con un'API. Lo stiamo facendo per i primi passi di un principiante nello sviluppo di WordPress. 

In una serie di follow-up, prenderemo il lavoro che abbiamo fatto in questa serie e lo estraiamo in un plugin più gestibile che include anche una maggiore attenzione alla manutenibilità, alla sicurezza e altro ancora.

Per ora, ci stiamo concentrando sulle basi dell'API.

Preparare il tema

Ricorda che sto usando un'installazione di base di WordPress insieme al tema Twentysixteen per le demo che vedremo in questo tutorial e nel resto delle esercitazioni della serie.

In secondo luogo, introdurremo dei cambiamenti functions.php. Questo di solito non è il posto migliore per fare questo cambiamento; tuttavia, assicurati di aver letto la nota sopra prima di procedere.

Detto questo, supponiamo che tu abbia il tuo server in esecuzione, il tuo IDE attivo e pronto, e functions.php nel tuo editor. Anche se il tuo screenshot può sembrare un po 'diverso, dovrebbe assomigliare a questo:

La sfida con lavorare con functions.php è che è già pieno di codice che aiuta a potenziare il tema esistente. Anche se alla fine sposteremo il nostro codice in un plug-in in una serie futura, facciamo almeno il primo passo per creare il nostro file in modo da poter contenere autonomamente il nostro codice.

Usando il tuo IDE di scelta:

  1. Crea un nuovo file nella directory principale del tema twentysixteen.
  2. Nominare il file tutsplus-metadata.php.

Una volta fatto, dovresti avere qualcosa di simile nel tuo file system:

Infine, dobbiamo assicurarci di includerlo functions.php. Per fare ciò, aggiungi la seguente riga di codice appena sotto il tag PHP di apertura. 

Ricarica il tuo browser. Se tutto va bene, dovresti vedere il tema esattamente com'era prima di aggiungere il tuo file functions.php

Ora, mettiamoci al lavoro.

Iniziare

Ricordiamo la nostra precedente discussione che abbiamo bisogno di tre cose per aggiungere i metadati al database:

  1. un ID post
  2. una chiave unica con la quale possiamo identificare i metadati
  3. un valore con cui andiamo a memorizzare quello che vogliamo recuperare in seguito

Per questo tutorial, tutto quello che ci interessa fare è aggiungere i metadati che appariranno sul valore predefinito Ciao mondo! post che viene fornito di serie in ogni installazione di WordPress.

Diciamo che vogliamo aggiungere alcuni metadati che includono il nostro nome. Quindi la meta chiave che useremo è il mio nome e il valore che useremo è qualunque sia il tuo nome. Nel mio caso, è "Tom McFarlin".

La prima cosa che vogliamo fare è definire una funzione che si agganci il contenuto. Questo ci permetterà di emettere il nostro testo quando la funzione è in esecuzione. Se non hai familiarità con i ganci, ti preghiamo di leggere questa serie.

Il tuo codice iniziale dovrebbe assomigliare a questo:

Quando esegui questo codice, la stringa "[We are here.]" Dovrebbe apparire sopra il contenuto del post prima di ogni altra cosa, e dovrebbe solo succede sul Ciao mondo! inviare. Questo perché stiamo verificando che l'ID sia 1 prima di noi eco la stringa.

Si noti che la versione finale del codice condiviso alla fine di questo post sarà completa di commenti. Fino ad allora, spiegherò cosa sta facendo il codice mentre aggiungiamo ogni nuovo pezzo al nostro codice.

Aggiunta di metadati

Ora aggiungiamo alcuni metadati reali. Per fare ciò, aggiungi questo codice nel corpo del condizionale in modo che siamo sicuri che lo stiamo facendo Ciao mondo. Dal momento che stiamo già verificando l'ID di 1 nel condizionale, possiamo semplicemente rimuovere il codice che abbiamo aggiunto nella sezione precedente e aggiornarlo.

All'interno del corpo del condizionale, faremo una chiamata al add_post_meta Funzione API simile a questa:

Sarebbe bello se potessimo fare qualcosa con queste informazioni. Prima di farlo, però, ci sono altre informazioni che dobbiamo coprire. Vale a dire, sull'aggiornamento dei metadati (e su come si differenzia dall'aggiunta dei metadati) insieme ad alcune sfumature che non ci si può aspettare quando si ha a che fare con l'API.

Aggiornamento dei metadati

C'è una sottile differenza tra l'aggiunta di metadati e l'aggiornamento dei metadati. Sai come una chiave identifica univocamente un valore ad esso associato? Bene, questo è parzialmente accurato.

Quando chiami add_post_meta, stai creando una voce ogni volta che effettui quella chiamata. Quindi, nel nostro codice qui sopra, se aggiorni la pagina tre volte, vedrai qualcosa di simile a questo:

Curioso, giusto? Ricorda ciò che dice il Codice:

Si noti che se la chiave specificata esiste già tra i campi personalizzati del post specificato, viene aggiunto un altro campo personalizzato con la stessa chiave a meno che l'argomento $ univoco sia impostato su true, nel qual caso, non vengono apportate modifiche.

Ah, c'è un parametro opzionale che la funzione accetta. È un booleano chiamato $ unico, e ci permette di passare vero se vogliamo solo assicurarci che il valore aggiunto sia unico.

Potresti voler cancellare i tuoi record esistenti a questo punto. In caso contrario, va bene, basta usare un valore diverso per il il mio nome chiave.

Ciò significa che potremmo aggiornare il nostro codice per assomigliare a questo:

Ora stai creando una sola voce. Inoltre, se dovessi provare a cambiare il valore di quella chiave nel codice, allora sarebbe non essere sovrascritto nel database. Una volta che i metadati del post sono stati completati, vengono memorizzati come se fossero la prima volta.

Ma non deve essere così, ed è qui update_post_meta entra in gioco. Infatti, update_post_meta potrebbe essere usato più di add_post_meta, a seconda del tuo caso d'uso.

Prima di dare un'occhiata al codice, controlla cosa ha da dire il codice:

La funzione update_post_meta () aggiorna il valore di una meta chiave esistente (campo personalizzato) per il post specificato.
Questo può essere usato al posto della funzione add_post_meta (). La prima cosa che farà questa funzione è assicurarsi che $ meta_key esista già su $ post_id. In caso contrario, viene chiamato add_post_meta ($ post_id, $ meta_key, $ meta_value) e viene restituito il risultato.

Hai capito? Può "essere usato al posto di add_post_meta", che è utile perché questo significa:

  1. Se i metadati del post esistono già per una determinata chiave,
  2. Se usi update_post_meta,
  3. Sovrascriverà il valore precedente.

A questo punto, potresti voler cancellare le informazioni che hai nel tuo database, o creare una nuova coppia di chiavi e valori. Ciò significa che possiamo aggiornare il nostro codice per assomigliare a questo:

Ciò comporta tuttavia alcuni pericoli intrinsechi. 

Vale a dire, se sovrascrivi un valore che non avresti mai voluto sovrascrivere, allora quel valore è scomparso, e non può essere recuperato (a meno che tu non lavori più al di fuori dell'ambito di questa serie).

C'è un argomento finale opzionale per update_post_meta, però, e questo è il $ prev_value discussione. Cioè, puoi specificare quale valore vuoi sovrascrivere.

Prendi, ad esempio, il caso in cui hai più record con la stessa chiave creata con add_post_meta e si desidera aggiornare solo uno di quei record. Per aggiornare i dati, devi passare il valore corrispondente a quel record.

Qual è la differenza?

La differenza tra add_post_meta e update_post_meta può essere considerato sottile, ma dipende dal tuo caso d'uso. 

Cercherò di suddividerli nel modo più semplice possibile perché, anche se può sembrare complicato visti gli esempi che abbiamo visto sopra, è più semplice quando li metti tutti fuori.

  • add_post_meta è utile quando vuoi introdurre un record nel database. Se il valore esiste già, allora il nuovo valore può o non essere scritto. Se passi vero per il $ unico parametro della funzione, quindi verrà creato solo il primo record e Niente lo sovrascriverà tranne update_post_meta.
  • update_post_meta può essere usato al posto di add_post_meta e sovrascriverà sempre il valore precedente che esisteva. Se stai lavorando con più record creati da add_post_meta, quindi potrebbe essere necessario specificare un valore precedente che si desidera sovrascrivere.

E questo è tutto. Naturalmente, dobbiamo ancora occuparci di recuperare i record dal database e visualizzarli sullo schermo.

Recupero dei metadati

Quando si tratta di recuperare post metadati, ci sono due cose principali che devi ricordare:

  1. I metadati possono essere recuperati come una stringa.
  2. I metadati possono essere recuperati come una matrice.

A volte dipende da come hai memorizzato le informazioni originali; altre volte si basa su come si vuole lavorare con esso.

Prima di esaminare i vari modi in cui possiamo recuperare le informazioni, esaminiamo innanzitutto la chiamata API di base per farlo. In particolare, sto parlando get_post_meta. Se hai seguito fino ad ora, capire l'API dovrebbe essere relativamente facile.

La funzione accetta tre parametri:

  1. l'ID del post
  2. la chiave dei metadati
  3. un valore booleano facoltativo per se si desidera recuperare il valore come stringa o come matrice (dove un array è il valore predefinito se non viene specificato nulla)

Dal codice:

Recupera il post meta campo per un post. Sarà un array se $ single è falso. Sarà valore del campo dei metadati se $ single è vero.

Sembra abbastanza facile. Quindi, dato dove si trova l'ultimo bit del nostro codice sorgente, direi che possiamo recuperare le informazioni effettuando una chiamata come get_post_meta (get_the_ID (), 'my_name');.

Il codice, come sopra, restituirà un array. 

Valori multipli

Ogni volta che senti la frase "valori multipli", può essere utile pensare a una matrice o ad un qualche tipo di raccolta di dati nel linguaggio di programmazione che stai utilizzando.

Nei nostri esempi, pensiamo a quando stavamo memorizzando la stessa chiave più volte usando add_post_meta. Come ripasso, ecco come appariva il database:

Se dovessi recuperare le informazioni con la sua chiave, cosa dovrei tornare? Dal momento che non ho specificato che volevo una stringa, avrei recuperato una serie di tutti i record. Questo mi permetterebbe di scorrere attraverso ciascuno di essi.

Se, d'altra parte, dovessi specificare true per voler recuperare una stringa, otterrei solo la prima riga creata usando add_post_meta.

A tal fine, se stai cercando di recuperare più valori per una determinata chiave, il tuo codice sarà simile a questo:

Nota che sto usando var_dump per rendere più facile vedere quali informazioni stanno tornando da WordPress all'interno del browser; tuttavia, sono più un fan dell'uso di un debugger, che è qualcosa che potremmo discutere in un post futuro. 

Valori singoli

Supponiamo ora di voler ottenere valori singoli memorizzati per un solo post. In questo caso, hai ancora bisogno dell'ID post e della chiave dei metadati; tuttavia, dovrai anche fornire vero come il terzo parametro a get_post_meta.

Come detto sopra, se hai a che fare con una situazione in cui sono state create più righe usando add_post_meta, poi tornerai alla prima riga che è stata creata; tuttavia, se stai usando questa funzione a fianco update_post_meta quindi recupererai un valore stringa dei dati che sono stati memorizzati.

Poiché abbiamo trattato il primo ma non abbiamo trattato quest'ultimo, ecco come appare il codice:

E poi recupererai qualsiasi valore salvato come valore meta quando effettui una chiamata alla funzione. È piuttosto semplice rispetto al dover lavorare con un set di record e array che possono o meno contenere informazioni simili.

Eliminazione dei metadati

L'ultimo pezzetto di lavoro con i metadati del post ha tutto a che fare con la possibilità di eliminarlo. È facile, ma ci sono solo alcune sfumature che dobbiamo capire per essere sicuri di farlo in modo efficace.

Ma prima, ecco la definizione del Codice:

Questa funzione elimina tutti i campi personalizzati con la chiave specificata, o chiave e valore, dal post specificato. 

Breve, dolce e al punto. La funzione accetta tre argomenti:

  1. l'ID del post
  2. la meta chiave
  3. il valore meta

Il meta valore è facoltativo, ma è utile se hai lavorato con add_post_meta e desidera eliminare una delle voci specifiche create da più chiamate a quella funzione (come abbiamo visto in altre parti di questo tutorial).

Sebbene effettui una chiamata a delete_post_meta è semplice come passare un post ID, la meta chiave e il valore meta opzionale, la funzione restituisce un valore booleano che indica se i dati sono stati rimossi.

Il codice di esempio per l'eliminazione di alcuni metadati dei post che abbiamo visto fino ad ora potrebbe essere simile a questo:

Tuttavia, la tua implementazione potrebbe variare. Se stai lavorando con più parti di metadati e se vuoi verificare che si sia verificato un errore, allora puoi avvolgere il codice in un condizionale.

Un esempio finale di codice

Di seguito troverai uno spezzone di codice lungo e documentato che dovrebbe rappresentare la maggior parte di ciò di cui abbiamo parlato in questo tutorial. Si noti che le funzioni si stanno agganciare il contenuto.

Questo è solo a scopo dimostrativo in modo che tu possa facilmente attivare lo sparo di queste funzioni ogni volta che carichi una determinata pagina.

In genere, troverai le funzioni di metadati associate ad altri hook come save_post e operazioni simili, ma questo è un argomento per un lavoro più avanzato. Forse lo copriremo in un'altra serie più avanti quest'anno.

Conclusione

Ogni singola funzione dell'API è disponibile nel codice WordPress, quindi se vuoi andare avanti e fare ancora un po 'di lettura prima del prossimo articolo della serie, sentiti libero di farlo.

Come accennato in precedenza, questa è un'introduzione all'API di Meta di Post WordPress. Attraverso le informazioni fornite nel Codex, in questo tutorial e nel codice sorgente fornito, dovresti essere in grado di iniziare a scrivere contenuti aggiuntivi nel database relativo a ciascuno dei tuoi post.

Ricorda, tuttavia, questo è pensato per scopi dimostrativi poiché abbiamo più informazioni da trattare. Nello specifico, dobbiamo esaminare la sanitizzazione dei dati e la convalida dei dati. Anche se abbiamo argomenti aggiuntivi da trattare per primi (come i metadati dell'utente, i metadati dei commenti e così via), passeremo presto a argomenti più avanzati.

In definitiva, stiamo cercando di gettare le basi per i futuri sviluppatori di WordPress da cui partire quando vanno avanti e lavorano su soluzioni per gli altri, per le loro agenzie o persino per i loro progetti.

Detto questo, non vedo l'ora di continuare questa serie. Ricorda se hai appena iniziato, puoi dare un'occhiata alle mie serie su come iniziare con WordPress, che si concentra su argomenti specifici per i principianti di WordPress.

Nel frattempo, se stai cercando altre utilità che ti aiutino a costruire il tuo set crescente di strumenti per WordPress o che il codice studi e diventi più esperto in WordPress, non dimenticare di vedere cosa abbiamo a disposizione in Envato Mercato.

Ricorda, puoi prendere tutti i miei corsi e tutorial nella pagina del mio profilo, e puoi seguirmi sul mio blog e / o Twitter su @tommcfarlin dove parlo di varie pratiche di sviluppo del software e come possiamo impiegarle in WordPress.

Non esitare a lasciare qualsiasi domanda o commento nel feed qui sotto e cercherò di rispondere a ciascuno di essi.

risorse

  • Campi personalizzati
  • add_post_meta
  • update_post_meta
  • get_post_meta
  • delete_post_meta
  • Esempi di funzioni post-meta
  • eco
  • var_dump