サポート » 使い方全般 » 2つのカテゴリー+カスタムフィールドの値で条件設定

  • お世話になります。
    2つのカテゴリーをつかったループを作成したいのですが、
    一方のカテゴリーには、カスタムフィールドの値を条件に加えたいと考えています。
    検索条件として

    • カテゴリーAの記事
    • カテゴリーBでカスタムフィールドの値が“true”の記事

    どちらかに当てはまる記事を表示したいのです。

    とりあえずtax_queryを使った以下のコードを試してみましたが
    うまくいきませんでした。
    `
    $args = array(
    ‘posts_per_page’ => -1,
    ‘tax_query’ => array(
    array(
    ‘taxonomy’=>’category’,
    ‘terms’=>array( ‘カテゴリーA’ ),
    ‘field’=>’slug’,
    ),
    array(
    ‘taxonomy’=>’category’,
    ‘terms’=>array( ‘カテゴリーB’ ),
    ‘field’=>’slug’,
    ‘meta_query’ => array(
    array(
    ‘key’=>’カスタムフィールド名’,
    ‘value’=>true,
    )
    )
    ),
    ‘relation’ => ‘OR’
    )
    );
    $my_query = new WP_Query( $args );
    以下ループ
    `
    他に方法があれば、ご教授いただければと思います。 何卒よろしくお願い致します。

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • 単純にカテゴリーA or カテゴリーB かつカスタムフィールドがtrueのものを持ってきたらどうでしょうか?
    カテゴリーAについても同じカスタムフィールドをデフォルト値falseで設定するとかすれば間違いはないと思うのですが、いかがでしょう。

    トピック投稿者 d-xanthus

    (@d-xanthus)

    ikaring様
    ご返信いただきありがとうございます。また返信が遅くなりまして申し訳ないです。

    最初は以下のようなコードで試したのですが

    
    $args = array(
                        'category_name'    => 'カテゴリーA,カテゴリーB',
                        'posts_per_page'   => -1,
                        'meta_query' => array(
                                          array(
                                            'key'=>'カスタムフィールド',
                                            'value'=>true,
                                            )
                                          )
                      );
    

    この場合、カテゴリーBのtrueのモノしか表示されませんでした。(カテゴリーAは全て表示したい)

    クライアントの間違いを防ぐために、ページの複数カテゴリーの選択をOFFにいますが、
    カテゴリーBはその上でカスタムフィールドにチェックを入れたものだけ掲載したいと考えています。

    おっしゃる通りカテゴリーAにもカスタムフィールドを設置して、デフォルトでfalseにしておく、というのも案としてはあるのですが、カテゴリーAに操作する必要のないフィールドを設置するのもどうかと思って…。
    (ちなみに上記のコードで’value’=>false,にすると何も表示されませんでした。)

    カテゴリーAは全件表示ですので、デフォルトでfalseではだめですね。失礼しました。

    カテゴリーAにはカスタムフィールドを設定しないのであれば、meta_queryを次のようにしたらどうなるでしょうか。

    $args = array(
      'category_name'    => 'カテゴリーA,カテゴリーB',
      'posts_per_page'   => -1,
      'meta_query' => array(
        'relation' => 'OR',
        array(
          'key'=>'カスタムフィールド',
          'value'=>true,
        ),
        array(
          'key'=>'カスタムフィールド',
          'compare'=>'NOT EXISTS',
        )
      )
    );
    トピック投稿者 d-xanthus

    (@d-xanthus)

    ikaring様

    早速ご提案のコードを試させていただきました。
    どうやらうまくいきそうです。
    meta_queryの中でrelationが設定できるのですね、勉強になりました。

    こちらの方法で進めたいと思います。
    ありがとうございました。

    よかったです👍

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • トピック「2つのカテゴリー+カスタムフィールドの値で条件設定」には新たに返信することはできません。