Gli standard di codifica di WordPress query di database e query SQL di formattazione

A parte il riassunto che forniremo come l'ultimo articolo di questa serie, questa è l'ultima spiegazione degli standard di codifica di WordPress che copriremo in questa serie.

Copriremo le sfumature delle query del database e come formattare SQL nel contesto del tuo codice.

Naturalmente, questo non sarebbe privo di un proprio insieme di avvertimenti: in generale, ci sono API che sono già disponibili che possono impedirci di scrivere SQL da soli; tuttavia, queste API non catturano ogni singolo caso di cui abbiamo effettivamente bisogno.

Dopo tutto, in che modo gli sviluppatori che implementano le API sanno esattamente cosa e come stiamo andando a costruire qualcosa?

A tal fine, daremo un'occhiata alle API che sono disponibili per l'esecuzione di query di database, come usarle e come definire le nostre query quando le API falliscono.


Query di database in WordPress

Come menzionato nell'introduzione di questo articolo, ci sono un certo numero di API che ci permettono di creare le nostre query senza dover scrivere SQL.

La ragione per cui è importante acquisire familiarità e apprendere queste API è che il codice che scrivi sia scritto sopra il livello di astrazione fornito da WordPress per assicurarti che le query siano il più ottimizzate possibile (vista la versione corrente).

Inoltre, aumenta la probabilità che qualsiasi codice che scrivi oggi sia compatibile con le versioni future di WordPress principalmente perché, ancora una volta, è scritto contro il livello di astrazione fornito da WordPress.

Se lo schema della tabella cambia, i parametri vengono mappati su clausole diverse in SQL o così via, non devi preoccuparti perché l'API si prenderà cura di te per te.


Quali sono le API Query?

E allora siamo le API di query definite da WordPress?

  • WP_Query è destinato a essere utilizzato per interrogare informazioni su qualsiasi tipo di post e relativo autore, categoria, tassonomie, tipo, stato e così via attributi correlati.
  • WP_User_Query è destinato a essere utilizzato quando è necessario recuperare le informazioni dalla tabella utente e dalla tabella usermeta. Ci consente anche di lavorare con ruoli, campi personalizzati e altro ancora.

Esistono anche altri metodi API di WordPress che facilitano l'acquisizione di materiale da varie tabelle di database, alcune delle quali non richiedono nemmeno un numero significativo di argomenti:

  • get_post_meta recupera i metadati associati a un determinato ID post. Può recuperare tutti i metadati o il valore per una chiave specifica.
  • get_comment_meta recupera i metadati associati a un determinato ID commento. Può recuperare tutti i metadati o il valore per una chiave specifica.
  • get_user_meta recupera i metadati associati a un determinato ID utente (stai iniziando a vedere un tema qui?). Può recuperare tutti i metadati o il valore per una chiave specifica.

Si noti che lo scopo di questo articolo non è quello di fare un tuffo in profondità in ciascuna di queste API (e ce ne sono altre) - solo per renderle note a coloro che non le hanno precedentemente utilizzate e per dare una breve definizione di quando possono essere utilizzati.

In definitiva, questi sono le API che dovresti esaminare prima di scrivere il tuo SQL. Per quello che vale, sto parlando per esperienza qui: ci sono stati momenti in cui ho scritto codice (o anche post di blog) che sono stati eliminati perché non stavano usando le migliori pratiche per interrogare il database.

Ma, come accennato in precedenza, queste API non possono prevedere tutti casi in cui è necessario scrivere le nostre query sul database. In quelle situazioni, WordPress fornisce un oggetto che ci consente di interagire direttamente con il database.


Tutto su $ wpdb

Questo ci porta a $ wpdb. Essenzialmente, $ wpdb è un oggetto disponibile in WordPress che ci consente di interfacciarlo direttamente con il database. Ciò significa che siamo in grado di scrivere SQL raw e farlo eseguire contro il database sottostante.

Inoltre, possiamo selezionare il modo in cui vogliamo che i dati vengano restituiti: matrici, oggetti, a volte singoli valori e così via. In effetti, l'oggetto offre la possibilità di eseguire le seguenti funzioni:

  • SELEZIONARE variabili, righe, colonne e risultati generici
  • INSERIRE righe
  • AGGIORNARE righe esistenti

Forse la preoccupazione maggiore quando si introduce SQL raw nel progetto è che si sta aprendo il progetto a potenziali comportamenti dannosi. Sebbene tu possa fare questo caso per qualsiasi logica di database, la verità è che le API dovrebbero fare un buon lavoro di protezione da qualsiasi cosa del genere.

In generale, lo fanno.

Ma $ wpdb non è esente neanche da quello. Esistono modi specifici per interfacciarsi con il database in modo da poter proteggere le query dall'iniezione SQL.

Per reiterare un punto dagli standard di codifica:

Se devi toccare il database, contatta alcuni sviluppatori inviando un messaggio alla mailing list di wp-hackers. Potrebbero voler prendere in considerazione la creazione di una funzione per la prossima versione di WordPress per coprire la funzionalità desiderata.

Quindi, in breve, se l'API non soddisfa ciò di cui hai bisogno, allora $ wpdb potrebbe essere la tua migliore opzione, ma ti consiglio di usarla solo se hai esaurito il resto delle tue opzioni.


Conclusione

A questo punto, abbiamo esaminato gli standard di codifica in un livello di dettaglio che spero fornisca informazioni che non avevi in ​​precedenza quando avvii questa serie.

Per concludere questo particolare post, il più grande take away che voglio che tutti abbiano è questo:

  1. Controlla l'API prima di scrivere inline SQL. Anche se la scrittura di query SQL dirette potrebbe essere più semplice, soprattutto per coloro che sono dotati di sistemi di database, resistono all'impulso! Controlla prima la documentazione dell'API.
  2. Se non riesci a trovare una funzione API per svolgere il tuo lavoro, scrivi SQL. Se tu dovere scrivi SQL, assicurati di prendere in considerazione tutte le cose necessarie: in che modo desideri che i dati vengano restituiti, hai preparato correttamente le tue query e gestisci correttamente i dati quando vengono restituiti.

Se lo fai, dovresti avere le basi coperte.

Nell'articolo finale di questa serie, avremo una guida rapida che riassume tutto ciò che abbiamo discusso in tutta la serie.