J'ai le type de message personnalisé foo
avec des méta-champs appelés bar
et baz
. Maintenant, je reçois l'objet WP_Query
en utilisant:
$args = array(
'post_type' => 'foo',
'meta_key' => 'bar',
'meta_value' => $bar_value,
'posts_per_page' => 10,
);
$res = new WP_Query($args);
Maintenant, je veux vérifier si la valeur baz
de l'article sélectionné est égale à $baz_value
. Comment puis je faire ça?
J'ai trouvé une solution à mon problème moi-même. Comme aucune des réponses existantes ne résolvait le problème, je me suis dit que je pourrais le mieux poster le mien ici pour aider les personnes aux prises avec des problèmes similaires.
La solution:
if($res->have_posts()) {
$id = $mail_res->posts[0]->ID; // blindly assuming there is only 1 post having baz = baz_value
$true_baz = get_post_meta($id, 'baz')[0];
if($true_baz== $baz) {
//success
} else {
//error
}
} else {
//error
}
Avez-vous essayé celui-ci:
$args = array(
'post_type' => 'foo',
'meta_key' => 'bar',
'meta_value' => $bar_value,
'posts_per_page' => 10,
);
$res = new WP_Query($args);
to
$args = array(
'post_type' => 'foo',
'meta_key' => 'bar',
'meta_value' => $bar_value,
'meta_compare' => '=',
'posts_per_page' => 10,
);
$res = new WP_Query($args);
Lisez ceci: WP_Query()
- WordPress Codex
Les arguments de la requête se trouvent à plusieurs endroits dans l'objet de la requête. Vous pouvez var_dump
l'objet et les voir.
$res->query_vars
$res->meta_query
(dans ce cas)$res->query
Les articles 1 et 3 seront plus faciles à utiliser. La syntaxe simple PHP de l'objet et du tableau vous fournira les informations dont vous avez besoin.