Comment pouvons-nous obtenir des publications où la clé méta n'existe pas dans une publication. J'ai créé une vidéo meta_key. et je veux pouvoir obtenir des publications avec WP_Query où la vidéo de champ personnalisé n'existe pas ou est vide.
$fsquery = new WP_Query(
array (
'posts_per_page' => 1,
'featured' => 'yes',
'meta_key'=>'video',
'meta_value'=>''
)
);
ça ne marche pas.
Il existe en fait une meilleure solution qui sera (espérons-le) déployée dans WordPress 3.4 - vous pouvez exécuter le correctif maintenant comme correctif si vous le souhaitez, mais voici le lien TRAC pour le correctif:
http://core.trac.wordpress.org/ticket/18158
Avec ça, tu peux faire ...
$my_query = new WP_Query(
array(
'meta_query' => array(
array(
'key' => 'foo',
'compare' => 'NOT EXISTS'
)
)
)
);
ou, remplacez-le par 'compare' => 'EXISTS' si vous le souhaitez.
-George
Vous pouvez utiliser le crochet de filtre posts_where
et créer une sous-requête pour exclure toutes les publications avec la méta-clé de la vidéo:
// Create a new filtering function that will add our where clause to the query
function filter_where_WPSE_18787( $where = '' ) {
$where .= " AND ID NOT IN ( SELECT DISTINCT post_id from $wpdb->postmeta WHERE meta_key = 'video' )";
return $where;
}
add_filter( 'posts_where', 'filter_where_WPSE_18787' );
$fsquery = new WP_Query(
array (
'posts_per_page' => 1,
'featured' => 'yes'
));
remove_filter('posts_where', 'filter_where_WPSE_18787' );
$my_query = new WP_Query(
array(
'meta_query' => array(
array(
'key' => 'foo',
'compare' => 'NOT EXISTS'
)
)
)
);
utilisé uniquement dans WP 3.5. C'est encore une version beta pour le moment.