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!
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.
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.
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.
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.
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.)
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.
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.
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.
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.
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.
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.
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.
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 ADERIRE
s lavoro.
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.
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.
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.
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.
Ora abbiamo esaminato i filtri relativi a WP_Query
, passiamo all'altro tipo di ami: le azioni.
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'); ?>
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.
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'). '
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!