Ciao, e benvenuti alla seconda parte della serie chiamata "Mastering WP_Query". Nella prima parte, abbiamo iniziato con la serie semplicemente introducendo cosa WP_Query
la classe è. E in questa seconda parte, impareremo le funzioni relative a WP_Query
.
Cominciamo!
Non sono un esperto di programmazione, ma posso vedere che il WP_Query
la classe è uno dei migliori esempi del modello MVC. È estremamente potente, completamente estensibile e molto facile da usare quando si conoscono le basi.
Oltre alle sue proprietà, metodi e parametri (che avremo in futuro), WordPress offre funzioni e hook aggiuntivi (ovvero azioni e filtri) per lavorare con WP_Query
classe. In questo tutorial, impareremo a conoscere le funzioni e nella parte successiva vedremo azioni e filtri correlati WP_Query
. Se vedi che ho dimenticato qualcosa, sentiti libero di notificarmi sparando un commento.
Ci sono 13 funzioni WordPress che funzionano con WP_Query
classe che può aiutarti a sfruttare il potere di WP_Query
. Non hanno bisogno di presentazioni, quindi eccoci qui:
get_query_var ()
Il nome della nostra prima funzione parla da solo, davvero: prende il globale $ WP_Query
oggetto e recupera una variabile di query pubblica da esso. Ha due parametri: il primo è la variabile che restituisce il suo valore e il secondo è un valore predefinito da restituire se la variabile non è impostata:
query_posts ()
Ad essere onesti, questo è un male funzione. Davvero non devi usarlo affatto, ma per il gusto di dire "nel modo giusto", lo esamineremo e diremo che è "nel modo sbagliato".
query_posts ()
è una funzione che altera la query principale mettendo da parte la query principale ed eseguendo una nuova query e che dovrai utilizzare wp_reset_query ()
pulire dopo.
Questa funzione è una delle più abusato funzioni nel nucleo di WordPress. Non dovresti usarlo per creare query secondarie: puoi usare il WP_Query
classe o il get_posts ()
funzione (di cui parleremo più avanti in questo tutorial). Non dovresti usarlo per alterare la query principale: dovresti usare il pre_get_posts
azione (di cui parleremo più avanti). Persino il Codice ci scoraggia dall'usarlo e mostra alternative.
Bottom line: non usarlo.
get_post ()
Un'altra funzione auto-esplicativa è get_post ()
, che usi per ottenere un singolo post. Ha tre parametri opzionali:
OGGETTO
, ARRAY_A
(un array associativo) o ARRAY_N
(un array numerico).'crudo'
quindi non verrà filtrato a meno che non lo si imposti 'modificare'
, 'display'
, 'attributo'
o 'Js'
.get_posts ()
Il get_posts ()
la funzione ci consente di eseguire query e salvarle come matrici da utilizzare in vari luoghi. Richiede gli stessi argomenti con WP_Query
così puoi personalizzare la query come preferisci. (Faremo una recensione WP_Query
i parametri in futuro, quindi rimanete sintonizzati!) È il modo migliore e più efficiente per creare elenchi di post, ma non cicli.
'news', 'order' => 'ASC', 'orderby' => 'post_title', 'posts_per_page' => -1); // Restituisce una matrice di tutti i post nella categoria "notizie". $ all_posts_list = get_posts ($ args); ?>
Sebbene questa funzione possa essere utilizzata per eseguire "query secondarie" senza problemi, il Codex consiglia di utilizzare WP_Query
quando si creano loop multipli e si usa get_posts ()
quando si preleva un elenco di post. Peter R. Knight spiega la differenza tra get_posts ()
e WP_Query
in termini semplici: la differenza principale è questa WP_Query
rende più query di database (dati post, metadati, dati dell'autore e dati di commenti) mentre get_posts ()
fa una sola query (dati post).
get_pages ()
Questo dispari la funzione ha lo scopo di recuperare un elenco di pagine, sebbene abbia un post_type
parametro che può anche consentire di selezionare un altro tipo di post (purché il tipo di post sia gerarchico, altrimenti restituisce falso
).
"ASC", "sort_column" => "post_title", "hierarchical" => 1, "exclude" => "," include "=>", "meta_key" => "," meta_value "=>", "autori '=> ",' child_of '=> 0,' parent '=> -1,' exclude_tree '=>",' number '=> ",' offset '=> 0,' post_type '=>' pagina ', 'post_status' => 'pubblica'); $ pages = get_pages ($ args);?>
Accetta argomenti molto simili a WP_Query
gli argomenti, ma sono leggermente diversi:
ordinamento
: Se ordinare le pagine in ordine ascendente (asc
) o decrescente (disc
) ordine.sort_column
: Come ordinare le pagine. accetta titolo del post
, menu_order
, data di pubblicazione
, post_modified
, ID
, post_author
, e POST_NAME
.gerarchica
: Se elencare le pagine in ordine gerarchico (1
) o no (0
).escludere
: Un elenco separato da virgole o un array di ID pagina da escludere dall'elenco.includere
: Un elenco separato da virgole o un array di ID di pagina da includere nell'elenco ed escludere tutto il resto.meta_key
: Se usato con meta_value
argomento, include solo le pagine che hanno la meta chiave e il valore definiti.meta_value
: Se usato con meta_key
argomento, include solo le pagine che hanno la meta chiave e il valore definiti.autori
: Un elenco separato da virgole di ID autore.figlio di
: Un ID di una pagina per recuperare solo i suoi figli e nipoti nell'elenco.genitore
: Elenca le pagine che hanno l'ID pagina fornito come genitore. Affinché questo argomento funzioni, il gerarchica
argomento deve essere impostato su 0
.exclude_tree
: Un elenco separato da virgole o un array di ID pagina da escludere con i relativi figli.numero
: Numero di pagine da recuperare.compensare
: Numero di pagine da saltare dall'alto.post_type
: Il tipo di post da interrogare. Naturalmente, il valore predefinito è pagina
.post_status
: Un elenco separato da virgole di tipi di stato post da includere.have_posts ()
Senza accettare alcun parametro, questa funzione restituisce semplicemente VERO
se la query restituisce eventuali record e FALSE
altrimenti.
the_post ()
Il Codice dice che "itera l'indice dei post nel Loop". Fa diverse cose:
$ postale
dati.nel loop
parametro a VERO
.$ postale
: setup_postdata ()
Anche questa funzione parla da sola: imposta i dati post globali. Vediamo cosa dice il Codex su questo:
setup_postdata () riempie le variabili globali
$ id, $ authordata, $ currentday, $ currentmonth, $ page, $ pages, $ multipage, $ more, $ numpages
, che aiutano molti Tag modello a funzionare nel contesto corrente del post. Non assegna il globale$ postale
variabile, ma sembra aspettarsi che il suo argomento sia un riferimento ad esso.
rewind_posts ()
Ancora un'altra funzione il cui nome indica la sua funzionalità: questa funzione semplicemente "riavvolge" il Loop in modo da poterlo riavviare in seguito.
$ postale
: wp_reset_postdata ()
Questa funzione reimposta il globale $ postale
variabile torna al primo post nella query principale. È meglio usare questo dopo una query secondaria.
wp_reset_query ()
Questo dovrebbe essere usato se la query principale è cambiata (con il query_posts ()
funzione o il pre_get_posts
azione che vedremo nella prossima parte) in modo che la query principale possa essere ripristinata.
is_main_query ()
Questo è un tag condizionale che ritorna VERO
se la query corrente è la query principale e FALSE
se non lo è. Semplice, giusto?
nel loop()
Un altro tag condizionale è nel loop()
che semplicemente ritorna VERO
o FALSE
se il tuo codice è in esecuzione all'interno del Loop o meno.
Eccoti, ora sai (probabilmente) tutte le funzioni relative a WP_Query
! Resta sintonizzato per la parte successiva in cui verremo a conoscenza WP_Query
azioni e filtri correlati.
Avete commenti o qualcosa da aggiungere a questa parte? Sentiti libero di condividere i tuoi pensieri commentando di seguito. E se ti è piaciuto l'articolo, non dimenticare di condividerlo con i tuoi amici!