Ich sehe, dass viele Leute es vorziehen, den Haken pre_get_posts anstelle von query_posts zu verwenden
Yay!
So pre_get_postsfiltert ein WP_QueryObjekt , das heißt alles , was Sie tun können , über die query_posts()Sie über tun können , $query->set()und $query->get(). Insbesondere können wir das meta_queryAttribut verwenden (siehe Codex ):
$meta_query = array(
array(
'key'=>'featured',
'value'=>'yes',
'compare'=>'!=',
),
);
$query->set('meta_query',$meta_query);
Aber ... dies ersetzt die ursprüngliche 'Meta-Abfrage' (falls vorhanden). Wenn Sie also die ursprüngliche Meta-Abfrage nicht vollständig ersetzen möchten, empfehle ich Folgendes:
//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);
Auf diese Weise fügen wir unsere Meta-Abfrage neben vorhandenen Meta-Abfragen hinzu.
Sie können / sollten nicht festlegen relationEigenschaft $meta_queryzu ANDoder OR(nach Rückkehr Beiträge , die alle zufrieden stellen, oder zumindest eine, Meta - Abfragen).
* Hinweis: Bei dieser Art von Abfrage werden Posts mit dem Metaschlüssel "featured" zurückgegeben, deren Wert jedoch nicht ist yes. Es werden keine Posts berücksichtigt, bei denen der "empfohlene" Metaschlüssel nicht vorhanden ist. Sie werden dies in 3.5 tun können .