Miglioramenti delle query nelle versioni più recenti di WordPress

Nell'ultimo anno, è stato scritto molto sui miglioramenti dell'interfaccia utente di WordPress: il cambiamento più discusso è stata la migliore esperienza di scrittura.

Ma se sei uno sviluppatore vorrai sapere di meno su questo e altro su ciò che è cambiato sotto il cofano. Qui dimostrerò uno dei cambiamenti più interessanti per gli sviluppatori: miglioramenti a determinati tipi di query.

Le principali modifiche sono le seguenti:

  • Il supporto per le query nidificate è stato aggiunto per le query su post metadati, date e termini di tassonomia.
  • Sono stati aggiunti parametri aggiuntivi per l'interrogazione dei commenti.
  • E alcuni bug sono stati risolti!

Diamo un'occhiata ai cambiamenti.

Query nidificate

Nelle versioni precedenti di WordPress, potresti usare un E o O istruzione per definire query per termini, date e metadati della tassonomia. Quindi, ad esempio, i seguenti argomenti verranno utilizzati in una query su un sito di ricette che emette ricette veloci per la colazione:

 'post', 'tax_query' => array ('relation' => 'AND', array ('taxonomy' => 'speed', 'field' => 'slug', 'terms' => array ('veloce' )), array ('taxonomy' => 'meal', 'field' => 'slug', 'terms' => array ('breakfast'))))); $ query = new WP_Query ($ args); ?>

Questo cerca il 'velocità' e 'pasto' tassonomie e uscite messaggi con il 'Presto' e 'prima colazione' termini rispettivamente.

Ma cosa succede se si desidera scrivere una query più complessa? Diciamo che volevi ricette veloci per la colazione e ricette lente per il pranzo (forse per qualcuno che vuole fare colazione velocemente, così hanno più tempo per cucinare il pranzo!). Non vuoi usare un semplice E dichiarazione per unire tutti gli elementi della tua query, da allora si otterrebbero ricette lente per la colazione e pranzo, per esempio. E tu non vuoi usare un O dichiarazione che collega tutti i termini, poiché otterrai tutti i tipi di ricette che hanno solo uno dei termini interrogati insieme ad altri che vuoi filtrare.

La buona notizia è che ora puoi farlo. Per interrogare ricette veloci per colazione e ricette lente per il pranzo, dovresti usare quanto segue:

 array ('relation' => 'OR', array ('relation' => 'AND', array ('taxonomy' => 'pasto', 'campo' => 'slug', 'termini' => array (' colazione ')), array (' taxonomy '=>' speed ',' field '=>' slug ',' terms '=> array (' quick '))), array (' relation '=>' AND ', array ('taxonomy' => 'meal', 'field' => 'slug', 'terms' => array ('lunch')), array ('taxonomy' => 'speed', 'field' => ' slug ',' terms '=> array (' slow ')))))); $ query = new WP_Query ($ args); ?>

Qui ho usato due array annidati:

  • L'array esterno usa O, perché stiamo cercando post che siano veloci ricette per la colazione o ricette slow lunch.
  • Il primo array annidato cerca post che sono veloci ricette per la colazione, usando E perché vuoi che il post abbia entrambi i termini.
  • Il secondo array annidato cerca ricette a pranzo lento, usando ancora E.

Ovviamente è possibile variare le query per includere più termini e valori di tassonomia e ottenere tutto il necessario.

Applicazione di query annidate: termini, metadati e date della tassonomia

L'esempio che ho dato sopra utilizza termini di tassonomia, ma questa funzione è stata aggiunta anche alle query di data e metadati. I metadati sono potenzialmente in cui le cose potrebbero diventare interessanti, dato che hai lo scopo di tanti valori.

La sintassi funziona esattamente allo stesso modo per le query di data e metadati. Per le meta query che sostituisci tax_query con meta_query e usare 'chiave' e 'valore' come i parametri. Per le query sulla data che sostituisci tax_query con date_query e utilizzare i parametri di data forniti nel codice WordPress.

Parametri del commento

Per interrogare i commenti, si usa il WP_Comment_Query classe al posto del più comunemente usato WP_Query classe. Questa classe ha aggiunto otto nuovi parametri:

  • 'Author__in': identificare l'autore del commento (o una serie di autori)
  • 'Author__not_in': identificare i commenti non da un certo autore (o serie di autori)
  • 'Post_author__in': identifica l'autore (o la matrice di autori) del post su cui è stato effettuato il commento
  • 'Post_author__not_in': esclude commenti fatti su post scritti da particolari autori o matrici di autori
  • 'Comment__in': commenti con un determinato ID o array di ID
  • 'Comment__not_in': esclude commenti con un determinato ID o array di ID
  • 'Post__in': commenti fatti su un post o array di post (usando l'ID post)
  • 'Post__not_in': esclude i commenti fatti su un post o una serie di post (usando l'ID post)

I valori utilizzati per questi sono l'ID dell'autore, l'ID di commento o l'ID post appropriato.

Si noti che il WP_Comment_Query la classe ora supporta anche le query nidificate.

Correzioni di bug

Ci sono stati anche un paio di correzioni di bug che potresti trovare utili:

  • Un bug che ha causato il fallimento delle query quando a date_query è stato usato insieme a a tax_query o meta_query è stato risolto.
  • quando "orderby" => "meta_value" è stato usato quando si passa a 'Meta_query' con il O relazione in WP_Query, questo usato per rompere la query. Questo è stato risolto.

Se si desidera il downdown su tutti i dettagli, è possibile trovarlo sul sito principale di WordPress.

Sommario

Questi miglioramenti alle query portano a WordPress un ulteriore passo avanti verso la piena capacità di CMS. La possibilità di utilizzare query annidate significa che è possibile produrre contenuti in modi molto più flessibili e complessi. Sarà interessante vedere come le persone li usano!