Je vois que beaucoup de gens préfèrent utiliser le crochet pre_get_posts au lieu de query_posts
Yay!
pre_get_posts
Filtre donc un WP_Query
objet, ce qui signifie que tout ce que vous pouvez faire via query_posts()
vous pouvez le faire via $query->set()
et $query->get()
. En particulier, nous pouvons utiliser l' meta_query
attribut (voir Codex ):
$meta_query = array(
array(
'key'=>'featured',
'value'=>'yes',
'compare'=>'!=',
),
);
$query->set('meta_query',$meta_query);
Mais .. cela remplace la «méta-requête» d'origine (si elle en avait une). Donc, à moins que vous ne vouliez remplacer complètement la méta-requête d'origine, je suggère:
//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);
De cette façon, nous ajoutons notre méta-requête aux méta-requêtes existantes.
Vous pouvez / pouvez pas définir la relation
propriété $meta_query
à AND
ou OR
(à des postes retour qui répondent à tous, ou au moins une, les requêtes méta).
* Remarque: ce type de requête renvoie des articles avec la méta-clé «en vedette», mais dont la valeur n'est pas yes
. Il n'inclura pas les publications où la méta-clé «en vedette» n'existe pas. Vous pourrez le faire en 3.5 .