Argomenti WP_Query categorie e tag

Nelle parti precedenti di questa serie, hai imparato come WP_Query è strutturato e quali sono le sue proprietà e i suoi metodi. Lo stadio successivo è comprendere i vari argomenti che è possibile utilizzare con esso e il modo migliore per farlo.

WP_Query ha un gran numero di argomenti possibili, il che lo rende estremamente flessibile. Come puoi usarlo per interrogare praticamente qualsiasi cosa contenuta nel tuo wp_posts tabella, ha argomenti per ogni permutazione di query che potresti voler eseguire sul tuo contenuto.

In questo tutorial vedrò due tipi di argomenti, per quanto segue:

  • categorie
  • tag

Gli argomenti per queste due tassonomie sono simili ma hanno alcune differenze che devi sapere se hai intenzione di usarli efficacemente.

Un riassunto su come gli argomenti funzionano in WP_Query

Prima di iniziare, facciamo un rapido riassunto su come funzionano gli argomenti WP_Query. Quando si codifica WP_Query nei temi o nei plugin, è necessario includere quattro elementi principali:

  • gli argomenti per la query, usando i parametri che saranno trattati in questo tutorial
  • la query stessa
  • il cappio
  • terminare: reimpostare i dati del post

In pratica questo sarà simile al seguente:

have_posts ()) // Inizia il ciclo sui risultati della query. while ($ query-> have_posts ()) $ query-> the_post (); // I contenuti dei risultati dei post interrogati vanno qui.  // Ripristina i dati del post originale. wp_reset_postdata (); ?>

Gli argomenti sono ciò che dice a WordPress quali dati recuperare dal database e sono quelli che coprirò qui. Quindi tutto ciò su cui ci stiamo concentrando qui è la prima parte del codice:

$ args = array (// Argomenti per la tua query.);

Come puoi vedere, gli argomenti sono contenuti in un array. Imparerai come codificarli mentre lavori attraverso questo tutorial.

Coding Your Arguments

Esiste un modo specifico per codificare gli argomenti nell'array, che è il seguente:

$ args = array ('parameter1' => 'value', 'parameter2' => 'value', 'parameter3' => 'value');

È necessario includere i parametri e i relativi valori tra virgolette singole, utilizzare => tra di loro e separarli con una virgola. Se si sbaglia, WordPress potrebbe non aggiungere tutti i tuoi argomenti alla query o si potrebbe ottenere una schermata bianca.

Parametri di categoria

Iniziamo con i parametri di categoria. Le opzioni che hai qui sono le seguenti:

  • gatto (int): usa l'ID della categoria.
  • Nome della categoria(stringa): usa la categoria slug (NON nome).
  • category__and (schieramento): usa l'ID della categoria.
  • category__in (schieramento): usa l'ID della categoria.
  • category__not_in (schieramento): usa l'ID della categoria.

Nota che per nessuno di questi usi il nome della tua categoria. Persino il Nome della categoria parametro prende lo slug come valore, non come nome. Tendo ad usare questo piuttosto che l'ID come quando torno al mio codice in un secondo momento, le lumache sono più facili da identificare rispetto agli ID. Tuttavia, se ritieni che gli utenti del tuo sito possano modificare lo slug per una o più categorie, ti consiglio di utilizzare l'ID per evitare problemi.

Diamo un'occhiata a come usi ognuno di questi.

Il gatto Parametro

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

La ricerca per una categoria è simile a questa:

$ args = array ('cat' => '12');

La ricerca per più categorie è simile a questa:

$ args = array ('cat' => '12, 13, 14 ');

Quanto sopra dirà a WordPress di recuperare i messaggi che si trovano in una delle categorie elencate. Se vuoi trovare post in ognuno di un array di categorie, usi il category_and parametro, di cui più brevemente.

Puoi anche utilizzare il parametro cat per trovare i post che si trovano in una categoria ma non in un'altra, utilizzando un segno meno prima dell'ID della categoria come segue:

$ args = array ('cat' => '12, -13 ');

Quanto sopra richiederebbe i post nella categoria 12 ma non in categoria 13.

Il parametro nome_categoria

Il Nome della categoria parametro usa la categoria slug, non il nome (confuso, lo so!). Ancora una volta puoi usarlo con una singola categoria o con una serie di categorie per trovare i post che si trovano in una qualsiasi delle categorie.

Per interrogare i post in una singola categoria, aggiungi:

$ args = array ('category_name' => 'my-slug');

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

$ args = array ('category_name' => 'my-slug, your-slug, another-slug');

Come con il parametro cat, questo non troverà i post che sono in tutti delle categorie, ma troverà messaggi in qualunque delle categorie.

La categoria e il parametro

Se vuoi trovare post che fanno parte di una serie di categorie, questo è il parametro che usi. Prende gli ID di categoria per il suo valore. Quindi per trovare post in tutte e tre le categorie, useresti:

$ args = array ('category__and' => array ('12', '13', '14'));

Nota che questo usa un array non una stringa, quindi lo codifichi in modo diverso. Il parametro ha due underscore nel suo nome: usa solo uno e non funzionerà.

Il parametro category__in

Il prossimo parametro cerca post in uno o più gruppi di categorie. Funziona allo stesso modo del parametro cat e prende anche l'ID della categoria come valore.

Quindi, per interrogare i post in uno o più gruppi di categorie, devi utilizzare:

$ args = array ('category__in' => array ('12', '13', '14'));

Quanto sopra recupererebbe i messaggi da una o più di queste categorie.

Il parametro category__not_in

Il category__not_in parametro fa come ci si aspetterebbe: interroga i post che non sono in una categoria o in una matrice di categorie.

Per escludere i post da una categoria, devi utilizzare quanto segue:

$ args = array ('category__not_in' => '12');

E per escludere i post da una serie di categorie:

$ args = array ('category__not_in' => array ('12', '13', '14'));

Questo escluderebbe i post da una qualsiasi di queste categorie.

Parametri Tag

I tag hanno parametri leggermente diversi dalle categorie: temo che non si possa calcolare cosa potrebbero basarsi sulla tua conoscenza dei parametri di categoria!

I parametri del tag sono:

  • etichetta (stringa): usa tag slug.
  • tag_id (int): usa il tag id.
  • tag__and (schieramento): usa i tag id.
  • tag__in (schieramento): usa i tag id.
  • tag__not_in (schieramento): usa i tag id.
  • tag_slug__and (schieramento): usa tag slugs.
  • tag_slug__in (schieramento): usa tag slugs.

Diamo un'occhiata a ciascuno di questi.

Il parametro Parametro

Il etichetta parametro prende il tag slug per il suo valore e può essere usato per trovare messaggi con un tag o con una qualsiasi stringa di tag.

Quindi, per trovare i post con un tag che usi:

$ args = array ('tag' => 'my-tag');

E per trovare post con tag da una serie di tag:

$ args = array ('tag' => 'my-tag, your-tag, another-tag');

Si noti che i messaggi di query precedenti con qualunque dei tag nell'array, non tutti.

Il parametro tag_id

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

Per trovare i post con un singolo tag usi questo:

$ args = array ('tag_id' => '21');

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

$ args = array ('tag_id' => '21, 22, 23 ');

Puoi anche usare tag_id per escludere i tag, sia quando lo si utilizza per singoli tag o più tag.

Quindi per interrogare i post eccetto quelli con un determinato tag, devi usare:

$ args = array ('tag_id' => '-21');

Mentre trovi i post con uno dei due tag ma senza un altro tag, dovresti utilizzare questo:

$ args = array ('tag_id' => '21, -22, 23 ');

Pertanto, quanto sopra esaminerà i post con uno o entrambi i tag 21 o 23 ma non taggare 22.

Il tag__in Parameter

Questo parametro ti consente di trovare i post con uno o più di una serie di tag. Funziona allo stesso modo di etichetta se utilizzato con un array:

$ args = array ('tag_in' => array ('21', '22', '23'));

Questo interrogherà i post con uno o tutti i tag elencati. Se vuoi trovare post con tutti i tag, usi tag__and, che coprirò tra un momento.

Il tag__not_in Parameter

Il tag__not_in parametro ti consente di interrogare post che non hanno un determinato tag o array di tag.

Usalo in questo modo per escludere un tag:

$ args = array ('tag__not_in' => array ('21'));

Si noti che è ancora necessario utilizzare un array anche se si sta utilizzando solo un tag. Per ulteriori tag, utilizza:

$ args = array ('tag__not_in' => array ('21', '22', '23'));

Questo interrogherà i post che non hanno nessuno dei tag sopra.

I parametri tag_slug__and e tag_slug__in

Questi due parametri si comportano esattamente allo stesso modo di tag__and e tag__in parametri, eccetto per il fatto che usi lo slug del tag negli array invece dell'ID del tag.

Quindi per esempio per trovare post che hanno entrambi una coppia di tag, tu usi tag__slug_in:

$ args = array ('tag_slug__in' => array ('my-tag', 'your-tag', 'another-tag'));

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

Per includere post con tutti i set di tag, utilizzare tag_slug__and:

$ args = array ('tag_slug__and' => array ('my-tag', 'your-tag', 'another-tag'));

Invece di interrogare i post con uno qualsiasi dei tag, questo interroga solo i post che hanno tutti dei tag.

Sommario

Interrogare i tuoi post per categoria e / o tag è qualcosa che ha buone probabilità di avere a che fare con WP_Query. Utilizzando gli argomenti sopra riportati e combinandoli dove necessario, è possibile creare potenti argomenti per estrarre esattamente dal database i dati necessari.