✅ Notizie, temi, plugin WEB e WordPress. Qui condividiamo suggerimenti e le migliori soluzioni per siti web.

Guida: modifica la query globale di WordPress

16

In alcuni casi potrebbe essere necessario modificare la query di post globale che WordPress sta eseguendo su qualsiasi pagina che stai visitando, sia amministratore che frontend. In questa guida esamineremo quale hook utilizzare e come modificare gli argomenti della query a proprio piacimento.

Quale gancio usare

Per prima cosa devi sapere a quale hook aggiungere il tuo codice. Abbiamo bisogno di un hook che si verifica subito dopo che WordPress ha impostato tutti gli argomenti, ma prima che venga eseguita la query effettiva. Per questo utilizziamo l’azione pre_get_posts.

In questo hook ottieni un parametro; che è un WP_Queryoggetto con cui WordPress eseguirà in seguito la query. Apporti modifiche all’oggetto, ma non è necessario restituirlo poiché WordPress eseguirà la query con l’oggetto modificato.

add_action('pre_get_posts', function($query) { // Add your code here });

La modifica della query molto probabilmente richiede l’utilizzo di alcuni tag condizionali per specificare i casi in cui desideri modificarla. Ad esempio, potresti voler scegliere come target la query solo nei risultati di ricerca o nelle visualizzazioni di categoria.

Tag condizionali

WordPress ha un sacco di tag condizionali che puoi usare per specificare quali casi vuoi aggiungere il tuo codice. Un tag condizionale è semplicemente una funzione che restituisce true o false a seconda dello stato in cui si trova WordPress. Esempi di tag condizionali comuni servono is_admin()per verificare se siamo attualmente in admin o frontend, is_singular()se siamo in un singolo post o pagina nel frontend e is_search()se siamo nella pagina dei risultati di ricerca.

Tieni presente che l’hook pre_get_postsviene eseguito sia per l’amministratore che per il frontend. Se desideri solo influenzare la query globale nel frontend, devi racchiudere il tuo codice all’interno di un if-check sul tag condizionale is_admin().

Nota sui tag condizionali inpre_get_posts

I tag condizionali sono fantastici e tutto, ma ci sono alcune cose da tenere a mente quando li usi all’interno pre_get_posts.

In primo luogo, è necessario acquisire familiarità con il tag is_main_query(). L’azione pre_get_postsviene effettivamente eseguita più volte per ogni caricamento di pagina. Ad esempio pre_get_postsviene eseguito durante la generazione di ogni menu (compresi quelli nei widget). Per modificare la query globale effettiva, ad esempio i post per un archivio di categorie oi risultati di ricerca, è necessario selezionare come target la "query principale" utilizzando is_main_query().

In secondo luogo, è necessario essere a conoscenza dei casi in cui è necessario controllare i tag condizionali sull’oggetto fornito invece di chiamare la funzione "indipendentemente". Di solito quando usi i tag condizionali, lo scrivi in ​​questo modo:

if (is_main_query()) { // Do stuff }

Tuttavia, quando si utilizza pre_get_posts, ci sono alcuni tag condizionali che è necessario applicare all’oggetto. Per esempio:

Dovresti sempre controllare is_main_query()l’oggetto fornito in pre_get_posts. Leggi la documentazione per pre_get_posts per ulteriori informazioni.

Questo è un esempio di verifica se non siamo in admin e se siamo alla query del post principale:

Modifica o aggiunta di argomenti

Poiché stiamo lavorando con un WP_Queryoggetto, puoi fare riferimento alla documentazione di WP_Query per come costruire i tuoi argomenti per personalizzare la query dei post. Tieni presente che gli argomenti sono già popolati. In tal caso è necessario aggiungere o modificare i valori esistenti. Oppure rimuovi quelli che vuoi rimuovere.

Utilizzare la set()funzione WP_Querysull’oggetto per impostare argomenti. Il metodo accetta due argomenti, la chiave dell’argomento e in secondo luogo il valore. Ad esempio, l’impostazione posts_per_pagedell’argomento verrebbe eseguita in questo modo:

Nei casi in cui desideri aggiungere o modificare un argomento preesistente, di solito lo fai salvando prima l’argomento esistente in una variabile. Puoi usare il metodo get()per questo. Quindi modifichi la variabile, aggiungendo o unendo array o quant’altro. E infine usi set()per sostituire la variabile modificata sull’oggetto query. Consiglio di utilizzare var_dump()sull’oggetto per vedere cosa contiene, e questo è anche un bel modo per verificare se i tag condizionali sono corretti.

Ecco un rapido esempio di utilizzo get()(semplicemente controllando se è vuoto) e, in tal caso, aggiungi i tuoi argomenti con set().

Nota su tax_query

WordPress ha sottoclassi separate per la gestione della parte della tassonomia (WP_Tax_Query) all’interno di WP_Query. Se è necessario apportare modifiche alle query di tassonomia più complesse, l’ pre_get_postsazione potrebbe essere troppo presto. Alcuni valori potrebbero essere vuoti perché vengono popolati in un secondo momento. In questo caso potresti fare meglio a usare l’azione parse_tax_queryinvece di pre_get_posts. Leggi la documentazione per questo hook per vedere se questo è per te.

Conclusione

Gli argomenti che aggiungi o modifichi dipendono interamente da ciò che vuoi fare, ma ora dovresti avere alcune informazioni sulle strategie per ottenere la query globale. Se hai bisogno di approfondire l’ WP_Queryoggetto e come usarne gli argomenti, il mio post su come interrogare i post potrebbe essere di interesse.

Fonte di registrazione: awhitepixel.com

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More