In questa serie, abbiamo esaminato una serie di API di metadati offerte da WordPress. Ciò include l'API Post Meta e l'API Meta utente. Oggi andremo ad arrotondare la serie osservando l'API Meta dei commenti di WordPress.
Si noti che questo è che l'API di metadati finale WordPress offre. A partire da WordPress 4.4, ora c'è un'API Metadata Term. Per capirlo appieno, è importante comprendere le tassonomie, i termini e le loro relazioni nel contesto di WordPress. In una serie imminente, coprirò esattamente questo.
Ma oggi ci concentreremo sulla gestione dei metadati associati ai commenti. Se non hai letto altro in questa serie fino a questo punto, ti consiglio di rivedere ciò che abbiamo trattato finora.
Se vieni coinvolto, allora iniziamo.
In questa serie, abbiamo utilizzato la definizione di metadati di WordPress come base per comprendere come queste informazioni sono rappresentate nel contesto del nostro ambiente.
In particolare, abbiamo detto:
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 linea con il resto del contenuto che abbiamo visto in questa serie, questa definizione è vera con i metadati dei commenti proprio come con i metadati dei post e i metadati dell'utente.
L'aspetto positivo di questo è che una volta acquisita una gestione delle varie API di metadati che abbiamo trattato, ci dovrebbe essere una piccola sorpresa sul funzionamento delle altre funzionalità di metadati. Potrebbero esserci alcune cose diverse a seconda dell'API che stai usando, ma il succo della funzionalità sarà lo stesso.
E, come vedrai, questo continua ad essere il caso dell'API dei metadati dei commenti.
Come con le altre API che abbiamo esaminato in questa serie, ci sono quattro funzioni principali che esploreremo:
add_comment_meta
update_comment_meta
get_comment_meta
delete_comment_meta
A questo punto, probabilmente sai cosa aspettarti quando si tratta, ad esempio, delle differenze tra l'aggiunta di metadati del commento e l'aggiornamento dei metadati del commento. O, per esempio, lavorando con l'eliminazione dei metadati dei commenti.
Ciò non cambia il fatto che vale la pena esplorare ciascuna di queste funzioni API in dettaglio per assicurarci di aver coperto tutto ciò che c'è da sapere quando si lavora con loro.
Per il resto di questo articolo, sto assumendo quanto segue:
tutsplus-metadata.php
configura nella directory del tuo tema ed è inclusa nel tuo tema functions.php
file.Come ho usato negli articoli precedenti, sto usando le seguenti applicazioni:
Infine, tutti i metadati con cui lavoreremo sono memorizzati nel wp_commentmeta
tabella del database, quindi tutti gli screenshot che vedete del database saranno di quella particolare tabella.
A differenza di alcune altre tabelle di metadati che abbiamo visto, il wp_commentmeta
la tabella inizia vuota (supponendo che tu stia lavorando con una versione relativamente recente di WordPress).
Questo è buono in quanto ci fornirà una lavagna pulita, di sorta, da usare quando si esaminano le varie funzioni API. Nota che per tutti gli esempi qui sotto, faremo in modo che tutto ciò avvenga su Ciao mondo! inviare. Questo post ha l'ID di 1. Se vuoi usare un'altra pagina, semplicemente sostituisci 1 con l'ID del post in questione.
Con tutto ciò che è a posto, iniziamo a guardare ciò che è disponibile.
Per iniziare ad aggiungere metadati ai nostri commenti, è importante dare un'occhiata al wp_comments
tabella per vedere quali commenti esistono già. Se stai lavorando con una nuova installazione di WordPress, probabilmente vedrai un singolo record:
Questo è il commento predefinito fornito con WordPress, e andrà bene per gli esempi che useremo.
Se, d'altra parte, stai lavorando con un database pieno di commenti, nessun problema! Tutto quello che devi sapere è con quale commento stai lavorando (tramite il suo ID) e assicurati di essere coerente con il codice che utilizziamo di seguito.
Come con altre API che abbiamo esaminato in questa serie, l'aggiunta di metadati ai commenti è disponibile in due forme: unica e non unica. Stiamo andando a rivedere entrambi.
Il add_comment_meta
la funzione accetta tre parametri e un quarto parametro opzionale. Se passi vero
come quarto parametro, i metadati verranno aggiunti solo se la meta chiave specificata non esiste.
Ha senso? Diamo un'occhiata. Innanzitutto, configureremo una funzione che aggiungerà alcuni metadati associati al primo commento (ma lo faremo solo sul post avente l'ID di 1):
Si noti che ho passato il parametro true. Quindi ogni volta che aggiorno la pagina, WordPress vedrà che voglio che questo valore sia univoco, quindi non aggiungerà altre informazioni alla tabella del database associata a quel meta-chiave.
Aggiunta di metadati non univoci
Se, d'altra parte, voglio associare più valori con lo stesso meta-chiave, rimuoverei il parametro true. Ad esempio, utilizzare il seguente codice:
E poi aggiorna la pagina, per esempio, tre volte. Se tutto va come previsto, è possibile visualizzare tre nuovi record, ognuno dei quali contiene un numero casuale generato dalla chiamata a
rand ()
nell'argomento del meta-valore.È abbastanza facile continuare dritto, giusto? Se si desidera un singolo valore associato a una singola chiave, passare
vero
come quarto argomento opzionale; altrimenti, non specificare nulla.Aggiornamento del commento Meta
Se si desidera aggiornare i metadati dei commenti esistenti, è importante conoscere l'ID del commento, la meta chiave e il valore meta. Ciò significa che WordPress guarderà la meta chiave specificata e la assocerà al meta valore specificato.
Se il valore meta esiste, verrà sovrascritto. Se il meta valore non esiste, allora verrà creato. Si noti nell'ultima frase che c'è un po 'di funzionalità che è possibile utilizzare quando si aggiungono i metadati: se si desidera avere una informazione univoca scritta nella tabella dei metadati, è possibile utilizzare
update_comment_meta
e lo scriverà come un valore unico.Ciò può risultare in un po 'di codice confuso (poiché si legge come se stesse aggiornando qualcosa che non esiste), ma consente anche di far rispettare l'esistenza di un singolo record per la meta chiave fornita.
Cosa succede quando c'è una meta chiave associata a diversi meta-valori? In tal caso, è necessario conoscere il valore che si sta cercando di sostituire. In alcuni casi, potresti sapere esattamente di cosa si tratta. In altri casi, potrebbe essere necessario recuperare le informazioni per trovarle (che tratteremo nella prossima sezione).
Supponendo che vogliamo aggiornare uno dei record che abbiamo creato, come uno dei numeri casuali che abbiamo visto nell'esempio sopra, possiamo cercarlo usando il front-end del database:
E specificarlo come valore precedente nel seguente codice:
Dopodiché, possiamo aggiornare la pagina, dare un'occhiata al nostro database e vedere la modifica. Si noti che il lavoro che abbiamo appena svolto è rilevante per un ambiente di sviluppo e non è il modo in cui si andrebbe a gestirlo durante la produzione.
Invece, potrebbe essere necessario eseguire una query o recuperare un set di valori prima di aggiornarli. Questo ci conduce al prossimo argomento.
Richiamo del commento Meta
Ogni volta che si recuperano i metadati dei commenti, è necessario decidere se si desidera recuperare un singolo valore o tutti i valori associati alla meta chiave specificata.
Forse un altro modo di considerare questo è il seguente: Se sono stati aggiunti più pezzi di metadati con la stessa meta chiave (che abbiamo trattato nel Aggiunta di metadati unici sezione sopra), quindi probabilmente vorrai recuperare l'intera collezione di record.
Se, al contrario, vuoi solo recuperare un record perché sai che è unico o perché è stato creato con il
update_comment_meta
funzione, quindi si desidera che WordPress lo restituisca in un unico valore.Il
get_comment_meta
la funzione richiede tre argomenti e un quarto opzionale in base a ciò che si desidera recuperare.Recupero di una matrice
Supponiamo che stai cercando di recuperare una raccolta di tutti i valori associati a una singola meta chiave. Per fare questo, faresti una chiamata a
get_comment_meta
e dovresti specificare l'ID del commento e la meta chiave.Nel codice sopra, lo stamperemo sul browser web, ma saresti in grado di lavorare con questi dati in qualsiasi modo desideri, una volta che li hai recuperati. La cosa più importante da notare, però, è che il valore viene restituito come array.
Recupero di un singolo valore
Se si desidera recuperare un singolo valore, è sufficiente specificare l'ID commento e la meta-chiave in
get_comment_meta
funzione. Se ti capita di avere a che fare con una meta chiave con più valori, allora il primo valore che è stato creato è ciò che verrà restituito.Ad esempio, diciamo che ci sono tre record associati a un meta chiave e si desidera solo recuperare un valore. Il tuo codice sarà simile a questo:
E il valore risultante sarà simile a questo:
string (9) "967432645"In alternativa, se sai che i dati sono univoci, allora il codice sarà sempre lo stesso, così come il valore restituito.
L'unica differenza è che il primo esempio è stato recuperato da un set di più record e il secondo esempio è stato recuperato da un singolo record. Si noti inoltre che se si ha a che fare con un valore univoco, verrà comunque restituito come matrice, ma un singolo array di indice.
È importante notare che se si pianifica di eseguire qualsiasi tipo di confronto, in particolare su un valore di un tipo diverso, ad esempio un numero intero, sarà necessario acquisire il valore dall'array e sarà preferibile eseguire il tipo conversione prima di fare un confronto.
Eliminazione del commento Meta
L'eliminazione dei metadati è un'operazione semplice: richiede l'ID commento, una meta chiave e un valore meta opzionale.
Se non si specifica il valore meta, verranno rimossi tutti i record associati alla meta chiave. Se, tuttavia, si specifica il valore meta, verrà rimosso solo quel singolo record.
Rimozione di valori univoci
Ai fini di questo esempio, supponiamo di sapere che esiste un singolo pezzo di metadati per una data meta chiave. Ciò significa che la meta key deve essere unica per ciascun utente, quindi forse utilizza qualcosa come un ID generato in modo univoco, un timestamp o qualcosa di simile.
Per rimuovere un valore univoco, passiamo semplicemente l'ID commento e la meta-chiave:
Prima di eseguire questo codice, il database dovrebbe assomigliare a questo:
Dopo aver aggiornato la pagina, dai un'occhiata al database e dovresti vedere che il record è stato rimosso e il database dovrebbe assomigliare a questo:
Parleremo un po 'di più delle precauzioni da prendere quando cancelliamo i dati nella prossima sezione.
Rimozione di valori non univoci
In altre situazioni, diciamo che ci sono più valori associati a una singola meta chiave. Abbiamo visto questo numerose volte in questo articolo. Se si desidera eliminare tutti i record associati a una meta chiave, non è necessario specificare un valore meta.
Cioè, se si passa un ID commento e una meta chiave al
delete_comment_meta
funzione, rimuoverà tutti i pezzi dei metadati di commento. Scrivi ed esegui il seguente codice:Aggiorna la tua pagina e poi rivedi il database. Se non ci sono stati problemi, il tuo database dovrebbe essere libero da tutti i record che in precedenza avevano quel meta-chiave:
Ma ricorda che la rimozione dei dati da un database può essere pericolosa, soprattutto se si elimina accidentalmente qualcosa che non si è voluto cancellare. A tal fine, è importante mantenere i backup del database negli ambienti di produzione in modo da poterlo sempre ripristinare se qualcosa va storto.
Inoltre, questo dimostra perché è così importante avere un ambiente di sviluppo locale e un ambiente di staging per i test prima di distribuire il codice in un ambiente di produzione.
Il codice sorgente completo
Come previsto in tutta questa serie, ecco una copia di tutto il codice sorgente che abbiamo trattato in questo articolo. È completamente documentato e include commenti non mostrati in alcune delle sezioni precedenti.
Nota che se lo includi con il codice del resto degli articoli della serie, dovrai stare attento. Poiché tutto è registrato con lo stesso hook, potresti finire con risultati strani.
Per combatterlo, raccomando uno dei seguenti due scenari:
- Crea tre file separati: uno per ciascuno dei tipi di API di metadati che abbiamo esaminato.
- Commenta il
add_filter
chiamate, ad eccezione di quelle con cui stai attualmente lavorando.Ognuno di questi renderà più semplice lavorare con tutto il codice che abbiamo trattato fino ad ora.
Conclusione
Sia che tu stia lavorando con un'API di metadati o con una delle altre API, ogni sviluppatore di WordPress dovrebbe sempre avere accesso rapido al codice WordPress per cercare rapidamente quali API sono disponibili e come dovrebbero essere utilizzate.
Dato che abbiamo lavorato in questa serie, dovresti vedere come l'API progettata attorno ai metadati sia coerente. Questo rende un'API potente e facile da usare per estendere alcune delle principali funzionalità di WordPress.
Inoltre, ho menzionato che c'è un'altra API di metadati che è stata introdotta in WordPress 4.4. Intendo coprirlo in una prossima serie, ma richiederà un esame di alcune delle altre funzionalità basate su di esso.
Per ora, abbiamo coperto molto materiale per aiutarti a migliorare le tue abilità WordPress esistenti. Fino al prossimo articolo, ricorda che tutti i miei corsi e tutorial sono disponibili sulla mia pagina del profilo, e puoi leggere altri articoli su WordPress e WordPress sul mio blog.
WordPress ha un'economia attiva. Ci sono temi, plugin, librerie e molti altri prodotti che ti aiutano a costruire il tuo sito e progetto. La natura open source della piattaforma lo rende anche un'ottima opzione da cui puoi migliorare le tue capacità di programmazione. In ogni caso, puoi vedere tutto ciò che abbiamo a disposizione nel Marketplace Envato.
Sentitevi liberi di seguirmi su Twitter e su @tommcfarlin, dove parlo di varie pratiche di sviluppo del software, molte delle quali sono rilevanti per lo sviluppo web e molte delle quali sono specificamente orientate verso WordPress.
Come per tutti i miei articoli, non esitare a lasciare qualsiasi domanda o commento nel feed qui sotto, e mirerò a rispondere a ciascuno di essi.
risorse