it-swarm.com.de

tax_query operator wehe

Ich versuche, Beiträge nach mehreren Taxonomien zu filtern. Mein Code unten funktioniert großartig, aber das ist eine Sache, die ich nicht ganz herausfinden kann. Wenn ich die Posts filtere, werden anscheinend nur die Posts angezeigt, die für alle meine Taxonomiebegriffe gelten.

Um mein Problem zu veranschaulichen: Nehmen wir an, ich habe einen Beitrag und dieser Beitrag ist "Montana". Und Montana hat eine 'Regions'-Taxonomie von' region1 '. Es hat auch eine "Bevölkerung" von "pop1". Und wir haben einen weiteren Beitrag mit dem Namen "Idaho", der sich in "region2" und in "pop1" befindet, und zusätzlich in "pop2".

Also führe ich meine Abfrage aus:

$myquery['tax_query'] = array(
'relation' => 'OR',
array(

       'taxonomy' => 'regions',

       'terms' => array(region1),

       'field' => 'slug',

       'operator' => 'IN',
     ),
array(

       'taxonomy' => 'population',

       'terms' => array(pop1),

       'field' => 'slug',

       'operator' => 'IN',

)
);

query_posts($myquery);

Alles funktioniert super ... Idaho und Montana Beide tauchen auf. Also führe ich eine weitere Abfrage durch, diesmal filtere ich nach einem anderen Populationsbegriff 'pop2' zusammen mit 'pop1'.

$myquery['tax_query'] = array(
'relation' => 'OR',
array(

       'taxonomy' => 'regions',

       'terms' => array(region1),

       'field' => 'slug',

       'operator' => 'IN',
     ),
array(

       'taxonomy' => 'population',

       'terms' => array(pop1,pop2),

       'field' => 'slug',

       'operator' => 'IN',

)
);

query_posts($myquery);

Jetzt sollten Idaho und Montana beide auftauchen, oder? ... aber sie tun es nicht. Nur Montana wird angezeigt, weil es 'region1' hat, aber Idaho wird nicht angezeigt, weil es nicht in region1 ist und BEIDE 'pop1' und 'pop2' hat.

Also meine Frage:

Ist es möglich, den Taxonomieoperator arbeiten zu lassen, wenn mindestens einer der Begriffe übereinstimmt, anstatt dass alle zutreffen müssen?

1
kramdraw85

Ich bin mir nicht sicher, ob es eine Möglichkeit gibt, 'OR' anstelle von 'AND' zu verwenden. Alternativ können Sie Folgendes tun:

$myquery['tax_query'] = array(
    'relation' => 'OR',
    array(
        'taxonomy' => 'regions',
        'terms' => array('region1'),
        'field' => 'slug',
        'operator' => 'IN'
    ),
    array(
        'taxonomy' => 'population',
        'terms' => array('pop1'),
        'field' => 'slug',
        'operator' => 'IN'
    ),
    array(
        'taxonomy' => 'population',
        'terms' => array('pop2'),
        'field' => 'slug',
        'operator' => 'IN'
    )
);

query_posts($myquery);
2
tollmanz