Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. WordPress
Code

Argomenti di WP_Query: Tassonomie

by
Difficulty:IntermediateLength:MediumLanguages:
This post is part of a series called Mastering WP_Query.
WP_Query Arguments: Categories and Tags
WP_Query Arguments: Custom Fields

Italian (Italiano) translation by Roberta C (you can also view the original English article)

Finora in questa serie, abbiamo imparato come è strutturato WP_Query e quali sono le sue proprietà e metodi. Ora vediamo quali argomenti è possibile utilizzare con WP_Query e come si codificano.

WP_Query ha un gran numero di possibili argomenti, che lo rendono estremamente flessibile. Si può utilizzare per interrogare praticamente qualsiasi cosa sia archiviato nella tabella wp_posts, ha argomenti per ogni permutazione di query che si vuole eseguire sul sito web.

In questo tutorial getterò uno sguardo su come eseguire query per i termini di una tassonomia.

Un riassunto di come gli argomenti lavorano in WP_Query

Prima di iniziare, vediamo un veloce ripasso di come gli argomenti lavorano in WP_Query. Quando si usa WP_Query nei temi o plugin, è necessario includere quattro elementi principali:

  • gli argomenti della query, utilizzando i parametri che verranno trattati in questo tutorial
  • la query stessa
  • il loop
  • per finire: la chiusura dei tag if e while e ripristinare i dati del post

In pratica, ciò avrà un aspetto simile al seguente:

Gli argomenti sono ciò che dice ad WordPress quali dati recuperare dal database ed è di questi che mi occuperò qui. Quindi concentriamoci ora sulla prima parte del codice:

Come si può vedere, gli argomenti sono contenuti in un array. Si può vedere come codificarlo nel corso di questo tutorial.

Codificare gli argomenti

C'è una maniera specifica per codificare gli argomenti in un array, ed è la seguente:

È necessario racchiudere i parametri ed i loro valori tra virgolette singole, utilizzare => tra di loro, e separarli con una virgola. Se lo si fa in maniera sbagliata WordPress potrebbe non aggiungere tutti gli argomenti alla query o si potrebbe ottenere uno schermo bianco.

I parametri della tassonomia

Impostare i parametri per i termini di tassonomia è un po' più complicato che per le categorie e i tag dal momento che si utilizza tax_query. All'interno di questo argomento si scrive un array nidificato di argomenti per specificare la tassonomia e la durata utilizzando questi parametri:

  • taxonomy (string): Tassonomia
  • field (string): Seleziona il termine in base a ('term_id' (default), 'name' or 'slug').
  • terms (int/string/array): Termine(i) della tassonomia.
  • include_children (boolean): Se includere o meno i figli per le tassonomie gerarchiche Di default è true.
  • operator(string): Operatore per testare. I valori possibili sono 'IN' (default), 'NOT IN''AND'.

Il fatto di avere il parametro operator significa che non c'è bisogno di scegliere uno tra una serie di argomenti a disposizione per definire se si stanno includendo o escludendo termini (come si fa per i tag e le categorie), usare invece tax_query per tutto ciò che è relazionato alla tassonomia.

Se si desidera eseguire una query per più tassonomie, è possibile utilizzare il parametro relation prima di tutti gli array (uno per ogni tassonomia) con AND o OR per specificare se si desidera trovare i post con tutti i termini o con uno di essi.

Questo è più facilmente spiegato con alcuni esempi.

Eseguire una query per un termine di tassonomia

Questo è lo scenario più semplice e comporta solo l'uso di un array nidificato:

Le query di cui sopra per i post con il termine my-term-slug nella tassonomia my-taxonomy. Si noti che è anche necessario utilizzare il parametro field per identificare quale campo si sta utilizzando per identificare il termine, a meno che non si stia utilizzando l'ID  del termine che è impostato di default. Se si vuole utilizzare l'ID del termine usare qualcosa di simile a questo:

Utilizzare l'ID rende più difficile identificare ciò che la query sta cercando quando si torna in un secondo momento, ma evita eventuali problemi se si pensa che gli utenti potrebbero modificare gli slug dei termini.

Eseguire la query per più termini di una tassonomia

Se si desidera identificare i post con uno o più di una serie di termini della stessa tassonomia, bisogna scrivere un array nidificato, ma aggiungendo una serie di termini.

Ad esempio, per eseguire una query per i post con un ID qualsiasi di un elenco di ID del termine della tassonomia, è possibile utilizzare:

Ma se si vuole eseguire una query dei post con tutti questi termini? Bisogna utilizzare il parametro operator all'interno dell'array nidificato:

Si noti che il primo esempio in realtà utilizza l'operatore IN per trovare i post con uno qualsiasi dei termini, ma siccome così è di default non è necessario specificarlo negli argomenti.

Un altro scenario è se si desidera eseguire una query per post che non hanno nessuna di una serie di termini in una tassonomia, si fa in questo modo:

Qui ho sostituito l'operatore AND con NOT IN, il che significa WordPress troverà i post senza nessuno dei termini nell'array.

Si noti che se si preferisce utilizzare gli slug al posto degli ID del termine, è possibile farlo con uno qualsiasi di questi scenari. L'ultimo esempio dovrebbe apparire come questo:

Un altro scenario è se si desidera eseguire una query per i post che hanno un termine, ma non un altro. Questo utilizza l'operatore IN (che non è necessario includere in quanto è quello di default), con un segno meno davanti all'ID di qualsiasi termine da escludere

Questo esegue la query dei post con termine 11 ma non con termine 12.

Eseguire la query di termini per tassonomie multiple

Se si vuole lavorare con più di una tassonomia, bisogna creare più di un array. Vediamo questo semplice esempio, viene eseguita una query per i post con un termine di taxonomy1 e un termine di taxonomy2:

Qui ho scritto due array nidificati: uno per ogni tassonomia, usando gli stessi argomenti come ho fatto per gli esempi che utilizzano una sola tassonomia. Gli ho preceduti con l'argomento relation. È necessario includere l'argomento relation per dire ad WordPress se cercare tutte o alcuni dei post da ogni array. Questo funziona come il seguente:

  • se si usa 'relation' => 'AND', WordPress recupererà tutti i post specificati nel primo array e nel secondo array. Quindi nell'esempio sopra, saranno eseguite le query solo per i post con entrambi gli slug slug-one nella tassonomia taxonomy1 e lo slug slug-two nella tassonomia taxonomy2.
  • Se si usa 'relation' => 'OR', WordPress restituirà post dal primo array oppure dal secondo array. Quindi in questo caso avremo i post con o lo slug slug-one o lo slug slug-two (oppure entrambi).

Questo è il codice da usare per cercare post con uno dei due slug:

È anche possibile cercare per più di un termine in una data tassonomia aggiungendolo all'array:

Combinando l'argomento relation con le query nidificate e utilizzando l'argomento operator, è possibile creare query piuttosto complesse. Gli argomenti di seguito eseguono query dei post con un termine di una tassonomia, e non con un'altro da un'altra tassonomia:

Si noti che qui ho usato 'relation' => 'AND': se avessi usato OR, sarebbe stata eseguita una query dei post con slug slug-two e senza lo slug-one, piuttosto che i post che hanno slug-two, ma non slug-one, che è quello che stavo cercando.

Si potrebbe in teoria portare questo codice più avanti ed eseguire query ai termini di tassonomia che si vogliono: usare l'argomento operator in entrambe le query nidificate o aggiungere ulteriori query nidificate a termini in altre tassonomie.

Una precisazione sull'argomento tax

Ci si potrebbe chiedere perché non ho incluso l'argomento {tax}, quando è sufficiente scrivere come segue:

Si potrebbe avere familiarità con questo modo di eseguire le query alle tassonomie se si è hai fatto in passato, ma ora è deprecato e non si dovrebbe usare. Quindi passare a 'tax_query'! Usare tax_query ci fornisce molta flessibilità.

Riassunto

Eseguire query alle tassonomie è un po' più complicato rispetto a farlo con le categorie o con i tag, è necessario fare i conti con l'argomento tax_query.

Tuttavia, come abbiamo visto, questo è un argomento molto potente che dà un sacco di spazio e flessibilità per eseguire query al database in qualsiasi modo lo si desideri.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.