Ecco come recuperare qualsiasi post desiderato con WP_Query

Ecco come recuperare qualsiasi post desiderato con WP_Query

Ecco come recuperare qualsiasi post desiderato con WP_Query
СОДЕРЖАНИЕ
02 июня 2020

Se in passato hai creato temi semplici, è probabile che non sia necessario recuperare i messaggi per conto tuo. Dopotutto, WordPress carica i 10 post più recenti sulla pagina principale e i post corretti sulle pagine di archivio. Che dire di scenari più complessi? E se desideri una sorta di sitemap e vuoi elencare tutti i tuoi post e pagine ordinate per data?


WP_Query è tuo amico, ti consente di estrarre i post dal database in base ai tuoi criteri. Puoi recuperare tutti i post di una singola categoria che contengono anche determinati tag. È possibile recuperare tutte le pagine create lo scorso anno e i post che non dispongono di un’immagine in primo piano.

In questo post ti darò uno sguardo approfondito su come funziona WP_Query – cominciamo!

Un ciclo personalizzato

La chiave per lavorare bene con le query personalizzate è padroneggiare gli argomenti che puoi passare a loro. Prima di dare un’occhiata a questo, creiamo una rapida "scheletro" possiamo usare per elencare i post. Il ciclo su una normale pagina di archivio sarebbe simile al seguente:

<?php if (have_posts ()): ?>
<?php while (have_posts ()): the_post () ?>

<?php nel frattempo ?>
<?php altro: ?>

<?php endif ?>

Funziona bene perché prima che la pagina venga caricata, WordPress ha già recuperato i post corretti. Quando scriviamo una query personalizzata avremo bisogno di un ciclo personalizzato. Il codice è molto simile, ecco qui:

<?php
$ args = array (
‘post_type’ => ‘inviare’,
‘post_status’ => ‘futuro’
);
$ pianificato = nuovo WP_Query ($ args);

if ($ pianificato->have_posts ()):
?>
<?php while ($ programmato->have_posts ()): $ programmato->the_post () ?>

<?php nel frattempo ?>
<?php altro: ?>

<?php endif ?>

Creiamo una nuova query WordPress utilizzando la classe WP_Query, passandoci i parametri per specificare i tipi di post di cui abbiamo bisogno. Quindi chiamiamo i metodi have_posts () e the_post () sul nostro oggetto $ programmato.

Se sei nuovo nella programmazione orientata agli oggetti e non capisci davvero perché, non ti preoccupare, puoi comunque utilizzare facilmente query personalizzate. Ci concentreremo sull’array $ args in tutto il post, che sarà piuttosto semplice.

Argomenti semplici

Come ho già detto, il principale "corpo di conoscenza" quando si tratta di WP_Query sta nei suoi argomenti. Il Codice li elenca tutti, daremo uno sguardo a quelli più utili qui.

Alcuni argomenti sono piuttosto semplici, come il parametro tag o tag_id. Il primo prende un tag slug, poi un tag id. Puoi anche separare più elementi con virgole o utilizzare ID negativi per indicare che desideri recuperare i post che lo fanno non avere quel particolare tag allegato.

$ args = array (
‘post_type’ => ‘inviare’,
‘tag_id’ => ’22, 92,44, -21′
);
$ our_posts = new WP_Query ($ args);

Lo snippet recupererebbe gli articoli a cui sono attaccati uno dei primi tre tag, ma non il quarto. Mentre questo sistema è abbastanza potente per esigenze semplici, di solito utilizzo la query tassonomia molto più flessibile di cui parlerò un po ‘più tardi.

L’autore, nome_autore, gatto, nome_categoria, s (per i termini di ricerca), post_status, post_type sono esempi di alcuni campi più semplici. Si noti che alcuni campi, come post_status, richiedono di passare una matrice di stati se si desidera utilizzare più valori.

$ args = array (
‘post_type’ => array (‘post’, ‘page’),
‘post_status’ => array (‘bozza’, ‘pubblica’),
‘cat’ => ‘video musicali’
);
$ our_posts = new WP_Query ($ args);

L’esempio sopra recupera tutti i post che sono pagine o post; sono pubblicati o in stato bozza e hanno la categoria di musica o video assegnata. Questo potrebbe essere usato per visualizzare i titoli di qualsiasi contenuto attuale o pianificato relativo a musica o video.

Domande sulla tassonomia

Per cose semplici, utilizzare gli argomenti citati per recuperare post in base a categorie o tag è sufficiente, ma cosa succede se si dispone di una tassonomia personalizzata o è necessario combinare più parametri? La risposta sta nell’argomento tax_query che è esso stesso un array. Vediamo prima un esempio.

$ args = array (
‘post_type’ => ‘libro’,
‘tax_query’ => Vettore(
Vettore(
‘tassonomia’ => ‘genere’,
‘field’ => ‘Lumaca’,
‘terms’ => array (‘scifi’, ‘thriller’),
‘operatore’ => ‘NON IN’,
),
Vettore(
‘tassonomia’ => ‘autore’,
‘field’ => ‘Id’,
‘terms’ => array (92, 883, 399),
),
‘relazione’ => ‘E’,
),
);
$ query = new WP_Query ($ args);

Qui recuperiamo alcuni post dal nostro tipo di post “libro”, aggiungendo alcuni parametri di tassonomia. Usando due array definiti all’interno di tax_query abbiamo specificato che vogliamo estrarre i libri scritti dall’autore 92, 883 o 399 che sono non nel genere fantascientifico o thriller. Il parametro di relazione definisce la relazione tra le due matrici. Nel nostro caso è una relazione “e” che significa che entrambe le condizioni devono essere soddisfatte.

Se avessimo usato “o” avremmo recuperato libri che non rientrano nella categoria fantascienza o thriller o che sono stati scritti dai tre autori specificati. In parole povere questo significa: voglio vedere tutti i miei libri tranne il genere fantascientifico e thriller. Tuttavia, voglio vedere tutti i libri di Terry Pratchett, Douglas Adams e Stephen King, indipendentemente dal genere.

Meta query

Le meta query sono molto simili alle query di tassonomia nella struttura ma utilizzano i dati della tabella meta post per filtrare i post. Il codice seguente mostrerà tutti i post pubblicati con un’immagine in primo piano.

$ args = array (
‘post_type’ => ‘inviare’,
‘meta_query’ => Vettore(
Vettore(
‘chiave’ => ‘_Thumbnail_id’,
‘valore’ => ”,
‘confronta’ => ‘! =’,
),
),
);
$ query = new WP_Query ($ args);

WordPress memorizza l’ID dell’immagine in primo piano per un post utilizzando il campo _thumbnail_id. Quindi, se recuperiamo tutti i post in cui questo meta-valore non è vuoto, dovremmo finire con tutti i post che hanno un’immagine in primo piano.

Il segreto qui è sapere come usare la proprietà e il tipo di confronto. Puoi utilizzare una moltitudine di valori che dovrebbero essere familiari da SQL: “=”, “! =”, “>”,”>= “,”<“,”<= ‘,’ MI PIACE ‘,’ NON MI PIACE ‘,’ IN ‘,’ NON IN ‘,’ TRA ‘,’ NON TRA ‘,’ ESISTE ‘(da WordPress 3.5 in poi) e’ NON ESISTE ‘(da WordPress 3.5 e su)

La proprietà type è in genere importante quando si desidera confrontare numeri o date. I valori possibili sono “NUMERIC”, “BINARY”, “CHAR”, “DATA”, “DATETIME”, “DECIMAL”, “FIRMATO”, “TEMPO”, “SENZA FIRMA”. Ricorda di usare NUMERIC quando confronti i numeri, nella maggior parte degli altri casi dovresti stare bene.

Proprio come con le query di tassonomia è possibile impilare più requisiti e quindi utilizzare i parametri di relazione per specificare la relazione tra di essi.

$ args = array (
‘post_type’ => ‘inviare’,
‘meta_query’ => Vettore(
‘relazione’ => ‘O’,
Vettore(
‘chiave’ => ‘umore’,
‘valore’ => array (‘felice’, ‘fantastico’),
‘confronta’ => ‘IN’,
),
Vettore(
‘chiave’ => ‘reddito’,
‘valore’ => 500,
‘confronta’ => ‘>’,
‘tipo’ => ‘NUMERICO’
),
),
);
$ query = new WP_Query ($ args);

L’esempio sopra mostra i post di un ipotetico diario in cui è successo qualcosa di buono. Mi sono sentito felice o fantastico o ho guadagnato più di $ 500 quel giorno.

Parametri della data

Le date possono diventare un po ‘complesse, ma sono molto flessibili. Il Documentazione WP_Query ha molti esempi se hai bisogno di maggiori informazioni.

Recuperare post da un certo momento è abbastanza semplice. È possibile utilizzare l’anno, il mese, il w (settimana dell’anno), il giorno e un paio di altri parametri per specificare un orario. Il codice seguente recupera tutti i post dal marzo 2013.

$ args = array (
‘post_type’ => ‘inviare’,
‘anno’ => 2013,
‘mese’ => 3
);
$ query = new WP_Query ($ args);

Se desideri entrare in intervalli di tempo più complessi, devi utilizzare date_query. Ciò consente di specificare intervalli arbitrari abbastanza facilmente, utilizzando un formato array familiare. L’esempio seguente, per gentile concessione del Codice, mostra come recuperare i post scritti tra le 9:00 e le 17:00 nei giorni feriali.

$ args = array (
‘post_type’ => ‘inviare’,
‘date_query’ => Vettore(
Vettore(
‘hour’ => 9,
‘confronta’ => ‘>=’,
),
Vettore(
‘hour’ => 17,
‘confronta’ => ‘<=’,
),
Vettore(
‘dayofweek’ => array (2, 6),
‘confronta’ => ‘FRA’,
),
),
);
$ query = new WP_Query ($ args);

Risultati dell’ordine

L’ordine in cui viene presentato un elenco è importante tanto quanto gli elementi all’interno. Per fortuna WordPress ci offre order_by e parametri dell’ordine. Il parametro order è piuttosto semplice, puoi usare ASC o DESC per ordinare in ordine crescente o decrescente.

Il parametro order_by può assumere un numero di valori: ‘none’, ‘ID’, ‘author’, ‘title’, ‘name’, ‘type’, ‘date’, ‘modificato’, ‘parent’, ‘rand’ , ‘comment_count’, ‘menu_order’, ‘meta_value’, ‘meta_value_num’, ‘post__in’. Ordinare per meta_valore può essere particolarmente utile. In questo caso, non dimenticare di specificare anche il campo meta_key.

$ args = array (
‘post_type’ => ‘pittura’,
‘meta_query’ => Vettore(
Vettore(
‘chiave’ => ‘prezzo’,
‘valore’ => 50000,
‘confronta’ => ‘>’,
‘tipo’ => ‘NUMERICO’
),
),
‘order_by’ => ‘Meta_value_num’,
‘meta_key’ => ‘prezzo’
);
$ query = new WP_Query ($ args);

Questo esempio recupera dipinti per un valore di oltre $ 50.000 e li ordina in ordine crescente per prezzo. Si noti che poiché il prezzo è memorizzato come numero, ho usato meta_value_num per ordinare i risultati, al contrario di meta_value che verrebbe utilizzato per le stringhe.

Un altro ordine degno di nota è post__in. Questo post__in è un parametro a sé stante, consente di specificare un array di ID post da recuperare. Per impostazione predefinita, WordPress ordina i post per data, l’ordine specificato in post__in non viene conservato. Se usi post__in anche come ordine per valore, WordPress manterrà l’ordine.

$ args = array (
‘post_type’ => ‘inviare’,
‘post__in’ => array (23, 441, 12, 322, 34, 33),
‘order_by’ => ‘Post__in’,
);
$ query = new WP_Query ($ args);

Avvolgendo

Spero sia chiaro da questa introduzione a WP_Query che questa è davvero una classe potente. Ti consente di recuperare i post utilizzando i tuoi criteri in modo standard WP. Dai un’occhiata a questo documentazione per ulteriori informazioni e alcune grandi proprietà e metodi che questa classe offre per manipolare la query e il ciclo.

WP_Query fa parte di ciò che rende WordPress un ottimo CMS generale: la capacità di recuperare oggetti dal database in modo modulare e personalizzabile.

Se avete domande, fatecelo sapere nei commenti!

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Это интересно
    Adblock
    detector