J'essaie d'utiliser une logique conditionnelle pour comparer des champs personnalisés dans ma requête, mais un peu bloqué. Comment pourrais-je obtenir tous les messages avec ReleasedProject AND PermanentArtist défini sur "true"?
Voici ce que j'ai jusqu'à présent, je suppose que cela a quelque chose à voir avec 'comparer':
Merci
osu
EDIT: pour clarifier ce que je veux faire, j'essaie d'exclure des pages comportant deux valeurs de champ personnalisées (ReleasedProject et PermanentArtist dans ce cas ) réglé sur 'false'. Celles-ci sont définies via les cases à cocher générées à l'aide du modèle de champ personnalisé du plug-in.
J'ai mis à jour le code pour illustrer le fait que je dois filtrer toutes les pages avec ces deux champs personnalisés définis sur false:
global $post;
$artist_args = array(
'post_type' => 'page',
'post_parent' => $post->ID,
'posts_per_page' => -1,
'orderby' => 'name',
'order' => 'ASC',
'meta_query' => array(
array(
'key' => 'ReleasedProject',
'value' => 'false'
),
array(
'key' => 'PermanentArtist',
'value' => 'false'
)
)
);
$my_query = new WP_Query($artist_args);
Si vous souhaitez que toutes les publications ayant ReleasedProject
AND PermanentArtist
soient toutes deux définies sur true, vous devez modifier les clés value
pour les deux en 'true'
. Si vous souhaitez exclure toutes les publications dont les deux sont définies sur 'false'
, vous devez ajouter 'compare' => '!='
aux deux tableaux de méta-requêtes.
La logique des méta-requêtes est telle que toutes les conditions doivent être remplies (c'est une relation AND
). Donc si vous dites
'meta_query' => array(
array(
'key' => 'ReleasedProject',
'value' => 'false'
),
array(
'key' => 'PermanentArtist',
'value' => 'false'
)
)
Cela signifie "trouver tous les articles dont le projet relâché est identique à 'false'
ET artiste permanent identique à 'false'
." Si vous deviez ajouter l'instruction 'compare' => '!='
comme je l'ai mentionné plus tôt, le message "trouvez tous les articles dont le projet relâché n'est PAS identique à 'false'
ET Artiste permanent n'est pas identique à 'false'
". Si vous avez une publication dont le projet relâché est défini sur 'false'
et l'artiste permanent défini sur 'true'
, il n'apparaîtra dans aucune de ces requêtes.
De plus, si une méta-valeur est manquante, elle ne figurera pas non plus dans les résultats. Ainsi, si vous avez une publication dont le projet Released est défini sur true et que l'artiste permanent n'est pas défini du tout, cette méta-requête ne trouvera pas cette publication:
'meta_query' => array(
array(
'key' => 'ReleasedProject',
'value' => 'false',
'compare' => '!='
),
array(
'key' => 'PermanentArtist',
'value' => 'false'
'compare' => '!='
)
)
Fondamentalement, les méta-requêtes ne font pas de "vérifications", mais "et/et" lorsque vous avez plusieurs méta-requêtes.