Padronanza di WP_Query azioni e filtri

Benvenuti nella terza parte della nostra serie chiamata "Mastering WP_Query". Nella parte precedente, abbiamo esaminato 13 funzioni di WordPress correlate a WP_Query classe. In questa parte, esamineremo gli hook di WordPress (filtri e azioni) che è possibile utilizzare insieme a WP_Query.

Quindi, senza ulteriori indugi, iniziamo!

WP_ Filtri correlati

Nel "Riferimento filtri" del Codex, ci sono 16 filtri WordPress elencati sotto il titolo "Filtri WP_Query". In questa sezione, parleremo di loro. Sarà una sezione abbastanza veloce perché la maggior parte dei filtri riguardano diverse "clausole" di una query di database eseguita dal WP_Query classe.

Torneremo su di loro, subito dopo aver esaminato i filtri che non sono correlati alle clausole.

Filtro del numero di post trovati per la query: found_posts

Questo filtro ti consente di cambiare il numero di oggetti trovati senza il limite che proviene WP_Query'S posts_per_page discussione.

Questo filtro è particolarmente utile per la creazione di pagine personalizzate. Vediamo cosa dice il Codice:

Ad esempio, se stai dichiarando un valore di offset personalizzato nelle tue query, WordPress NON detrarrà l'offset dal parametro $ wp_query-> found_posts (ad esempio, se hai 45 post utilizzabili dopo un offset di 10, WordPress ignorerà il offset e ancora dare found_posts un valore di 55).

Ha senso.

Filtraggio della query da eseguire per il recupero dei messaggi trovati: found_posts_query

Il numero di elementi trovati viene calcolato con SELEZIONA FOUND_ROWS () comando in MySQL. Questo filtro ti consente di cambiare questo comando con qualcos'altro, nel caso in cui sia necessario calcolare il numero di oggetti trovati in un modo diverso.

Filtraggio dell'intera query SQL: posts_request

Se si desidera modificare la query SQL completata, questo è il filtro da utilizzare. In pratica sostituisce l'intera query SQL composta da WP_Query classe.

Filtraggio della matrice Restituisce la query: posts_results

Se vuoi modificare il PHP schieramento quello WP_Query genera con la query SQL, è possibile utilizzare questo filtro. C'è un esempio accurato sul Codex in modo che tu possa vedere come funziona.

(Si noti che questo filtro gestisce il file crudo array generato dalla query SQL.)

Filtra l'array di messaggi recuperati: the_posts

diversamente da posts_results, il the_posts il filtro attende che l'array venga elaborato internamente, il che significa che l'array verrebbe controllato su post non pubblicati e appiccicosi. Utilizzare questo se non si desidera che non siano pubblicati o messaggi nell'array.

Filtrare la lista dei campi (e il SELEZIONARE Clausola) della query: posts_fields

Il SELEZIONARE la clausola di una query SQL determina quali campi del database saranno selezionati dalle righe del database risultanti e questo filtro consente di filtrarlo.

Filtrare il LIMITE Clausola della query: post_limits

Il LIMITE la clausola di una query SQL imposta le limitazioni alla query e questo filtro consente di filtrarlo.

Filtrare il DISTINCT Clausola della query: posts_distinct

Il DISTINCT la clausola di una query SQL indica che la query deve restituire solo risultati diversi e questo filtro consente di filtrarlo. Naturalmente, WP_Query non restituisce risultati distinti ma quando si utilizza questo filtro con una funzione che restituisce "DISTINCT", la query verrà regolata per restituire solo risultati diversi.

Filtrare il DOVE Clausola della query: posts_where

Il DOVE la clausola di una query SQL viene utilizzata per filtrare MySQL SELEZIONARE, INSERIRE, AGGIORNARE o ELIMINA dichiarazioni, e questo filtro ti aiuta a filtrare questo filtro. Mentre il WP_Query la classe fa tutto il lavoro necessario per filtrare i risultati, puoi fare un ulteriore passo avanti usando questo filtro.

Filtrare il DOVE Clausola della query dopo aver calcolato il paging: posts_where_paged

Questo filtro è un'iterazione per posts_where filtro, che è possibile utilizzare con le query di paging.

Filtrare il DOVE Clausola di una query di ricerca: posts_search

Un'altra iterazione al posts_where filtro è questo filtro, che puoi usare per modificare il DOVE clausola di una query utilizzata per ottenere risultati di ricerca in WordPress.

Filtrare il ADERIRE Clausola della query: posts_join

Il ADERIRE la clausola di una query SQL consente di eseguire il comando SQL all'interno di più tabelle di database e questo filtro consente di filtrarlo. Questa è una delle parti avanzate di MySQL, quindi non consiglio di usare questo filtro a meno che tu non conosca molto bene come MySQL ADERIREs lavoro.

Filtrare il ADERIRE Clausola della query dopo aver calcolato il paging: posts_join_paged

Proprio come posts_where_paged è un'iterazione di posts_where, questa è un'iterazione per il posts_join filtro che funziona su query di paging.

Filtrare il ORDINATO DA Clausola della query: posts_orderby

Il ORDINATO DA la clausola di una query SQL organizza l'ordine della query e questo filtro consente di filtrare l'ordine.

Filtrare il RAGGRUPPA PER Clausola della query: posts_groupby

Il RAGGRUPPA PER clausola di una query SQL rende la query restituisce risultati "raggruppati" da un campo di database e questo filtro consente di filtrare come raggruppare i risultati.

Filtraggio di tutte le clausole della query: posts_clauses

Se vuoi trattare tutte le clausole contemporaneamente, c'è anche un filtro per questo: posts_clauses. Questo filtro copre il DOVE, RAGGRUPPA PER, ADERIRE, ORDINATO DA, DISTINCT, SELEZIONARE, e LIMITI clausole.

Azioni correlate a WP_Query

Ora abbiamo esaminato i filtri relativi a WP_Query, passiamo all'altro tipo di ami: le azioni.

Interferire con la query prima della sua esecuzione: pre_get_posts

Prima che la query venga analizzata, puoi interagire con essa (ad esempio, inserire ulteriori variabili di query) utilizzando questa azione. Vediamo un rapido esempio da Tom McFarlin per imparare come escludere una categoria dal loop principale:

set ('category__not_in', $ excluded); * / set_query_var ('category__not_in', $ excluded);  add_action ('pre_get_posts', 'tutsplus_exclude_category'); ?>

Gestire l'analisi della query: parse_query

diversamente da pre_get_posts, che interviene con la query prima le variabili di interrogazione sono impostate, il parse_query l'azione gestisce il processo dopo le variabili di query sono impostate. Pertanto, dovresti usare questa azione se vuoi controllare le variabili attuali e agire in accordo con esse.

Modifica l'oggetto Post: the_post

Il termine l'azione è un po 'di confusione perché è il nome di un hook di azione, a WP_Query-funzione correlata e anche un metodo di WP_Query classe.

Questa azione, come dice il Codex, ci consente di modificare l'oggetto post immediatamente dopo essere stato interrogato e impostato. Usando questa azione, puoi modificare direttamente l'output. Vediamo un esempio veloce:

'. __ ('FEATURED', 'tutsplus'). '
'; add_action ('the_post', 'tutsplus_featured_badge'); ?>

Fine della terza parte

Le azioni e i filtri sono sempre un argomento divertente su cui parlare e scrivere. (So ​​per certo che le mie due serie sulle azioni di WordPress e sui filtri WordPress erano divertenti da scrivere e hanno ottenuto una grande reazione dalla nostra base di lettori.) Spero che questa parte sia stata utile tanto quanto mi è piaciuto scriverla.

Vuoi aggiungere qualcosa all'articolo? Spara un commento nella sezione commenti qui sotto. E se ti è piaciuto l'articolo, non dimenticare di condividerlo con i tuoi amici!

Ci vediamo nella prossima parte, dove parleremo delle proprietà e dei metodi di WP_Query classe!