Cyber Monday Sale Save up to 40% off unlimited courses, tutorials and creative assets. Cyber Monday Sale! Save Now
Advertisement
  1. Code
  2. WordPress

Argomenti di WP_Query: Categorie e tag

by
Difficulty:IntermediateLength:MediumLanguages:
This post is part of a series called Mastering WP_Query.
WP_Query Arguments: Posts, Pages and Post Types
WP_Query Arguments: Taxonomies

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

Nelle parti precedenti di questa serie, che hai imparato come è strutturato WP_Query e quali sono le sue proprietà e metodi. La fase successiva consiste nel comprendere i vari argomenti con cui è possibile utilizzarlo e il modo migliore per farlo.

WP_Query ha un gran numero di argomenti, che lo rendono estremamente flessibile. Si può utilizzare per eseguire query di qualsiasi cosa stia nella tabella wp_posts, ha argomenti per ogni permutazione di query che si potrebbe voler eseguire nel contenuto.

In questo tutorial vedremo due tipi di argomento, per le seguenti operazioni:

  • categorie
  • tag

Gli argomenti per queste due tassonomie sono simili ma hanno alcune differenze che è necessario sapere se avete intenzione di utilizzarle in maniera efficace.

Un riepilogo su come funzionano gli argomenti in WP_Query

Prima di iniziare, facciamo un breve riepilogo sul funzionamento degli argomenti di WP_Query. Quando si codifica WP_Query in temi o plugin, è necessario includere quattro elementi principali:

  • gli argomenti per la query utilizzando i parametri che saranno trattati in questo tutorial
  • la query stessa
  • il loop
  • per finire: reimpostare i dati del post

In pratica avrà un aspetto simile al seguente:

Gli argomenti sono ciò che dicono ad WordPress quali dati deve recuperare dal database e qui parlerò di questi. Così concentriamoci sulla prima parte del codice:

Come potete vedere, gli argomenti sono contenuti in un array. Potrai imparare a codificarli attraverso questo tutorial.

Codificare gli argomenti

C'è un modo specifico per codificare gli argomenti di un array che è il seguente:

È necessario racchiudere i parametri e i relativi valori tra virgolette singole, usare => tra loro e separarli con una virgola. Se si sbaglia a scriverlo, WordPress potrebbe non aggiungere tutti gli argomenti per la query o si potrebbe ottenere uno schermo bianco.

Parametri di categoria

Cominciamo con i parametri di categoria. Le opzioni che avete qui sono:

  • cat (int): utilizza l'id di categoria.
  • category_name (stringa): utilizza lo slug della categoria (non il nome).
  • category__and (array): utilizza l'id di categoria.
  • category__in (array): utilizza l'id di categoria.
  • category__not_in (array): utilizza l'id di categoria.

Si noti che per nessuno di questi usa il nome della categoria. Anche il parametro category_name accetta lo slug come valore, non il nome. Io tendo ad usare questo piuttosto che l'ID perché quando torno al codice in un secondo momento, gli slug sono più facili da identificare rispetto agli IDs. Tuttavia se si pensa che gli utenti del sito potrebbero cambiare lo slug per una o più categorie, si consiglia di utilizzare l'ID per evitare eventuali problemi.

Diamo un'occhiata a come si utilizzano ciascuno di questi.

Il parametro cat

Il parametro cat è semplice: basta usare un ID di categoria singolo o una stringa di ID di categoria.

L'esecuzione di query per una categoria è simile al seguente:

L'esecuzione di query per più categorie assomiglia a questo:

Quanto sopra dirà ad WordPress di recuperare tutti i post che si trovano in nessuna delle categorie elencate. Se si desidera trovare tutti i post  di una serie di categorie, si utilizza il parametro di category_and .

È anche possibile utilizzare il parametro cat per trovare tutti i post che sono in una categoria, ma non in un'altra, utilizzando un segno meno prima dell'ID di categoria come segue:

Quanto sopra dovrebbe eseguire una query dei post nella categoria 12, ma non nella categoria 13.

Il parametro category_name 

Il parametro category_name utilizza lo slug della categoria, non il nome (confusione, lo so!). Si può usare con una singola categoria o con una serie di categorie per trovare i post che si trovano in alcune delle categorie.

Per eseguire la query dei post in una singola categoria si aggiunge:

E per trovare post in una o più di categorie, utilizzare questo:

Come con il parametro di cat, questo non troverà i post che sono in tutte le categorie, ma troverà i post che non sono in nessuna delle categorie.

Il parametro category__and

Se si desiderano trovare tutti i post che sono in una serie di categorie, questo è il parametro che si utilizza. Questo prende l'ID di categoria per il suo valore. Così, per trovare tutti i post in tutte e tre le categorie, si utilizzerebbe:

Si noti che questo usa un array e non una stringa, quindi il codice è scritto in modo diverso. Il parametro ha due caratteri di sottolineatura nel suo nome: metterne solo uno non lo farà funzionare.

Il parametro category__in

Il parametro successivo cerca post in uno o più array di categorie. In realtà funziona nello stesso del parametro cat e prende anche l'ID di categoria come valore.

Quindi per eseguire la query dei post in uno array o una o più categorie, è necessario utilizzare:

Quanto sopra recupera i post da una o più di queste categorie.

Il parametro category__not_in

Il parametro category__not_in è come ci si aspetterebbe: interroga tutti i post che non sono in una categoria o in un array di categorie.

Per escludere i post da una categoria, si utilizzerà il seguente:

E per escludere i post da un array di categorie:

Ciò esclude tutti i post da una qualsiasi di queste categorie.

Parametri dei tag

I tag hanno parametri leggermente diversi rispetto alle categorie: non si può lavorare con loro basandosi sulla semplice conoscenza dei parametri di categoria, mi spiace!

I parametri dei tag sono:

  • Tag (stringa): utilizza lo slug del tag.
  • tag_id (int): utilizza l'id del tag.
  • tag__and (array): utilizza l'ID del tag.
  • tag__in (array): utilizza l'ID del tag.
  • tag__not_in (array): utilizzare l'ID del tag.
  • tag_slug__and (array): utilizza lo slug del tag.
  • tag_slug__in (array): utilizza lo slug del tag.

Vediamoli uno per uno.

Il parametro tag

Il parametro tag prende lo slug di un tag per il suo valore e può essere utilizzato per trovare i post con un tag o con uno qualsiasi di una serie di tag.

Quindi, per trovare i post con un tag si utilizza:

E per trovare i post con i tag di un array di Tag:

Si noti che la query sopra restituisce i post con qualsiasi tag nell'array, non tutti loro.

Il parametro tag_id

Il parametro tag_id funziona in modo simile al parametro cat: prende ID del tag e può essere utilizzato con un singolo tag o con più tag.

Per trovare i post con un singolo tag utilizzare questo:

Per trovare i post con uno o più tag da una stringa di ID di tag :

È anche possibile utilizzare tag_id per escludere tag, sia quando lo si utilizza per i singoli tag che con più tag.

Quindi eseguire la query sui post ad eccezione di quelli con un determinato tag, utilizzare:

Mentre per trovare i post con uno dei due tag, ma senza un altro tag, si utilizzerebbe questo:

Il codice sopra eseguirà una query ai post con uno o entrambi i tag 21 o 23 ma non col tag 22.

Il parametro tag__in

Questo parametro consente di trovare tutti i post con uno o più di un array di tag. Funziona nello stesso modo di tag quando utilizzato con un array:

Questo eseguirà una query dei post con uno qualsiasi o tutti i tag elencati. Se si desiderano trovare i post con tutti i tag, si utilizza tag__and, che tratterò tra un attimo.

Il parametro tag__not_in

I parametro tag__not_in consente di eseguire query dei post che non hanno un determinato tag o un array di tag.

Usarlo in questo modo per escludere un tag:

Si noti che è comunque necessario utilizzare un array, anche se si sta utilizzando un solo tag. Per multipli tag, utilizzare:

Questo eseguirà una query di tutti i post che non hanno alcuno dei tag sopra indicati.

I parametri tag_slug__and e tag_slug__in

Questi due parametri si comportano esattamente come i parametri tag__and e tag__in, tranne per il fatto che utilizzano lo slug del tag nell'array anziché l'ID del tag

Così, per esempio, per trovare tutti i post che hanno entrambi i tag, si utilizza tag__slug_in:

Questo trova tutti i post con uno qualsiasi di questi tag. Si potrebbe anche utilizzare il parametro tag con una stringa di slug di tag per ottenere lo stesso risultato.

Per includere i post con tutta una serie di tag, utilizzare tag_slug__and:

Invece di eseguire query dei post con uno qualsiasi dei tag, questa query restituisce solo i post che hanno tutti i tag.

Riepilogo

L'esecuzione di query dei post in base alla categoria e/o ai tag è qualcosa che con buona probabilità avrete occasione di fare con WP_Query. Utilizzando gli argomenti di cui sopra, e combinandoli dove necessario, è possibile creare potenti argomenti per estrarre esattamente i dati desiderati dal database.

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.