LoginSignup
0
0

More than 5 years have passed since last update.

2つのカスタム投稿タイプから記事を取得しつつ、1つはタクソノミーを指定する方法

Posted at

2つのカスタム投稿タイプから記事を取得するが、1つはタクソノミーで絞り込みたい時のtax_queryの書き方でハマったのでメモ。

カスタム投稿タイプとカスタムタクソノミー

カスタム投稿タイプ: CD(cd)
カスタムタクソノミー: cd_category
カスタム投稿タイプ: DVD(dvd)
カスタムタクソノミー: dvd_category

みたいな感じで、それぞれカスタム投稿タイプとカスタムタクソノミー(カテゴリー)が設定されている。

やりたいこと

  • CDは「全て」のカテゴリーの記事を取得する
  • DVDはタクソノミーが 「ライブ(live)」 の記事を取得する

tax_queryの書き方

$args = [
    'post_type' => ['dvd', 'cd'],
    'tax_query' => [
        'relation' => 'OR',
        [
            'taxonomy' => 'dvd_category',
            'field' => 'slug',
            'terms' => 'live'
        ],
        [
            'taxonomy' => 'dvd_category',
            'operator' => 'NOT EXISTS'
        ],
    ]
];
query_posts($args);

ポイントはtax_queryの2つ目の配列。

カスタム投稿タイプ「CD」の「全て」を取りたいので、cd_categoryを指定したくなるが、'operator' => 'ALL' の様な指定ができない。
CDに対してのtax_queryを指定しないと、dvd_category = live の条件がCDにも反映されてしまって、結果0件になってしまう。

そこで、 dvd_category が NOT EXISTS = CD全て という取り方をする必要がある。

 参考サイト

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0