Ich sehe, dass viele Leute es vorziehen, den Haken pre_get_posts anstelle von query_posts zu verwenden
Yay!
So pre_get_posts
filtert ein WP_Query
Objekt , 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_query
Attribut 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 relation
Eigenschaft $meta_query
zu AND
oder 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 .