J'essaie de filtrer la boucle pour trouver les publications qui ont un meta_key
avec un meta_value
spécifique. J'ai consulté le Codex et j'ai essayé ce qui suit sans succès:
// No results
$args = array(
'post_type' => 'cqpp_interventions',
'posts_per_page' => '-1',
'meta_query' => array(
'relation' => 'OR',
array(
'meta_key' => 'priority',
/* Tried this too
'meta_value' => '80',
'compare' => '='
*/
'meta_value' => array('80'),
'compare' => 'IN' )
)
);
// No results
$args = array(
'post_type' => 'cqpp_interventions',
'posts_per_page' => '-1',
'meta_key' => 'priority',
'meta_value' => 80
);
// This list me all cqpp_interventions and I can confirm that I have some with meta_value set to 80
$args = array(
'post_type' => 'cqpp_interventions',
'posts_per_page' => '-1',
'meta_key' => 'priority'
);
$cqpp_posts = get_posts( $args );
Voici comment je vérifie à l'intérieur de la boucle:
$priority = get_post_meta( get_the_ID(), 'priority');
echo '<pre>';
var_dump($priority);
echo '</pre>';
qui se traduit par:
search.php:16:
array (size=1)
0 =>
array (size=1)
0 => string '80' (length=2)
search.php:16:
array (size=1)
0 =>
array (size=2)
0 => string '80' (length=2)
1 => string '91' (length=2)
Que puis-je faire pour résoudre ce problème?
Vous pouvez essayer ceci:
$args = array(
'post_type' => 'cqpp_interventions',
'posts_per_page' => '-1',
'meta_query' => array(
array(
'key' => 'priority',
'value' => '80'
)
)
);
Le véritable problème de votre requête est que vous passez meta_key
et meta_value
. Cependant, les tableaux de votre argument meta_query
devraient plutôt contenir les clés key
et value
.
Cela fonctionnerait aussi:
'key' => 'priority',
'value' => array('80')
A partir de la référence de vos premiers $ args
$args = array(
'post_type' => 'cqpp_interventions',
'posts_per_page' => '-1',
'meta_query' => array(
'relation' => 'OR',
array(
'meta_key' => 'priority',
/* Tried this too
'meta_value' => '80',
'compare' => '='
*/
'meta_value' => array('80'),
'compare' => 'IN' )
)
);
Vous avez ajouté 'relation' => 'OR'
, ce qui n'est pas nécessaire. La relation
doit être ajoutée si vous avez plusieurs méta-valeurs à interroger. De plus, la comparaison n'est pas nécessaire si vous souhaitez une valeur spécifique, car utilise par défaut =
.
Les $ args mis à jour seront
$args = array(
'post_type' => 'cqpp_interventions',
'posts_per_page' => '-1',
'meta_query' => array(
array(
'meta_key' => 'priority',
'meta_value' => '80', // since 80 is string
)
)
);
// try either of below.
$myPost = new WP_Query( $args ); // fetch post and managed in objects
$myPost = get_posts( $args ); // fetch post and store in array
Espérons que cela va vous aider.
Merci