web-dev-qa-db-ja.com

複数のタグとANDを使ってWP_Queryを構築する方法 OR それらの間の演算子

特定のタグが条件付きで存在することに基づいて投稿を返すようにクエリを作成したいです。疑似照会はreturn posts with "((tagA OR tagB) AND (tagX OR tagY))"です。しかし、WP_Queryでそのようなクエリを作成する際に問題が発生しているため、何か提案があります。

https://codex.wordpress.org/Class_Reference/WP_Query#Tag_Parametersから これらのタグのいずれかを持つ投稿が表示されます
$query = new WP_Query( array('tag'=>'tagA,tagB'));

これには、次のタグがすべて含まれています。
$query = new WP_Query( array('tag'=>'tagX+tagY'));

しかし、2つのORクエリがANDとで結合されています。私はこれを試しました:
$query = new WP_Query( array('tag'=>'tagA,tagB+tagX,tagY'));

しかしこれはうまくいきませんでした。
そのような検索をするのにWP_Queryを使用できますか?任意の提案は大歓迎です。

UPDATE

"Gary D"は正しい方向を示し、 "Rarst"は同じ分類法でこれを使用できます。以下のこのクエリはWP4.5.2で期待される結果を与えます、そして私は標準投稿に標準タグを使用しています:

$args = array( /* Return posts with ((tagA OR tagB) AND (tagX or tagY)) */ 'meta_key' => 'SortField', 'order' => 'DESC', 'orderby' => 'meta_value', 'tax_query' => array( 'relation' => 'AND', array( 'taxonomy' => 'post_tag', 'field'=>'slug', 'terms'=> array('tagA','tagB'), 'operator'=>'IN' ), array( 'taxonomy' => 'post_tag', 'field'=>'slug', 'terms'=> array('tagX','tagY'), 'operator'=>'IN' ), ) ); $query = new WP_Query($args); if ( $query->have_posts() ) : while ($query->have_posts() ) : $query->the_post();

1
John

このようなことを試してみてください。(リンクしたのと同じページから来たもので、もう少し下にスクロールします)。

$args = array(
  'post_type' => 'post',
  'tax_query' => array(
    'relation' => 'AND', // searches for posts meeting both conditions
    array(
      'taxonomy' => 'midgets',
      'field'    => 'slug',
      'terms'    => array( 'tagA,TagB' ), // searches for EITHER tag
    ),
    array(
      'taxonomy' => 'donkeys',
      'field'    => 'slug',
      'terms'    => array( 'tagX,TagY' ), // searches for EITHER tag
    ),
  ),
);
$query = new WP_Query( $args );
1
Gary D