Question

Je suis en train d'utiliser une logique conditionnelle pour comparer les champs personnalisés dans ma requête, mais un peu coincé. Comment puis-je obtenir tous les messages avec jeu ReleasedProject ET PermanentArtist « true »?

Voici ce que j'ai jusqu'à présent, je suppose qu'il ya quelque chose à voir avec « comparer »:

Merci

OSU

EDIT : Pour clarifier ce que je veux faire - je suis en train d'exclure les pages qui ont deux valeurs de champ personnalisé (dans ce cas ReleasedProject et PermanentArtist) fixés à « faux ». Ceux-ci sont définies par les cases générées à l'aide du plug-in modèle personnalisé champ.

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 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);
Était-ce utile?

La solution

Si vous voulez que tous les messages qui ont ReleasedProject ET PermanentArtist à la fois la valeur true, vous devez changer les clés de value pour les deux ceux 'true'. Si vous voulez exclure tous les postes qui ont à la fois de ceux mis à 'false', vous devez ajouter 'compare' => '!=' aux deux tableaux méta de requête.

EDIT

La logique sous-jacente des requêtes méta est telle que toutes les conditions doivent être remplies (il est une relation de AND). Donc, si vous dites

'meta_query' => array(
    array(
        'key' => 'ReleasedProject',
        'value' => 'false'
    ),
    array(
        'key' => 'PermanentArtist',
        'value' => 'false'
    )
)

Cela signifie « trouver tous les messages qui ont tous deux sortis projet identique à 'false' Artiste et permanent identique à 'false'. » Si vous ajoutez l'instruction 'compare' => '!=' comme je l'ai mentionné plus tôt, cela reviendrait à dire « trouver tous les messages qui ont tous deux projets identiques à renonciataires PAS 'false' ET permanente Artiste non identique à 'false'. » Si vous avez un poste qui a publié ensemble du projet à 'false' et ensemble artiste permanent à 'true', il ne sera pas affiché dans l'une de ces requêtes.

En outre, si une valeur méta est manquante, il ne sera pas affiché dans les résultats non plus. Donc, si vous avez un message avec le projet Sortie Définie sur true, et artiste permanent pas fixé tout, cette méta requête ne trouvera pas ce poste:

'meta_query' => array(
    array(
        'key' => 'ReleasedProject',
        'value' => 'false',
        'compare' => '!='
    ),
    array(
        'key' => 'PermanentArtist',
        'value' => 'false'
        'compare' => '!='
    )
)

En fait, les requêtes méta ne font pas « soit / ou » chèques, ils contrôles « à la fois / et » lorsque vous avez plusieurs requêtes de méta.

Licencié sous: CC-BY-SA avec attribution
Non affilié à wordpress.stackexchange
scroll top