Vedo che molte persone preferiscono usare l'hook pre_get_posts invece di query_posts
Sìì!
Quindi pre_get_posts
filtra un WP_Query
oggetto, il che significa che tutto ciò che potresti fare tramite query_posts()
te può fare tramite $query->set()
e $query->get()
. In particolare possiamo usare l' meta_query
attributo (vedi Codex ):
$meta_query = array(
array(
'key'=>'featured',
'value'=>'yes',
'compare'=>'!=',
),
);
$query->set('meta_query',$meta_query);
Ma .. questo sostituisce la "meta query" originale (se ne avesse una). Quindi, a meno che non si desideri sostituire completamente la meta query originale, suggerisco:
//Get original meta query
$meta_query = $query->get('meta_query');
//Add our meta query to the original meta queries
$meta_query[] = array(
'key'=>'featured',
'value'=>'yes',
'compare'=>'!=',
);
$query->set('meta_query',$meta_query);
In questo modo aggiungiamo la nostra meta query insieme alle meta query esistenti.
Si può / non può decidere di impostare la relation
proprietà di $meta_query
a AND
o OR
(a ritorno messaggi che soddisfano tutti, o almeno uno, meta query).
* Nota: questo tipo di query restituirà i post con la meta chiave "in primo piano", ma il cui valore non lo è yes
. Non includerà post in cui non esiste la meta chiave "in primo piano". Sarai in grado di farlo in 3.5 .