サポート » プラグイン » meta_queryでACFでのカスタムフィールドの条件で抽出できない

  • 解決済 d-xanthus

    (@d-xanthus)


    お世話になります。
    多数のユーザーが投稿するサイトの運営に携わっているのですが、
    ユーザーのコラムに書籍カテゴリーの記事を関連付けしたいのです。
    書籍カテゴリーに記事にAdvanced Custom Fieldsのタイプ「ユーザー」で、
    ユーザー名を設定しているのですが、以下のコードでうまく記事が抽出できません。
    ACFの設定は、共著の場合もあるので、Multi Select で設定しています。

    お気付きになった点や、問題点等あれば、お教えいただければ幸いです。
    何卒よろしくお願いいたします。

    <?php
    $author_id = $post->post_author;//ユーザーID
    $author_name = get_the_author_meta('display_name',$author_id) ;
    
    $paged = (int) get_query_var('paged');
    $args = array(
      'paged' => $paged,
      'category_name' =>'books',//カテゴリー名
      'posts_per_page'=> -1,
      'post_type' => 'post',
      'meta_query' => array(
                            array(  'key'=>'booksWriter',//ACFのフィールド名
                                     'value'=> $author_name,
                                     'compare'=>'IN',
                                )
                           )
                     );
    $posts = get_posts( $args );
    ?>
    <?php if ($posts):?>
    <?php foreach($posts as $post) : setup_postdata($post)?>
    -----------中略---------------------
    <?php endforeach;?>
    <?php endif;?>

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • Advanced Custom Fieldsでは複数値が入る可能性のあるフィールドは、変数値がシリアライズされて入っています。
    要するに、値がそのまま入っているのではないので、compareをlikeにするか、Custom Field TemplateやSmart Custom Fieldsなどのシリアライズされないプラグインをお使いください。

    スレッド開始 d-xanthus

    (@d-xanthus)

    munyagu様

    ご返信いただき、ありがとうございます。

    すでにcompareをlikeにしても、何も表示されず、行き詰まっておりました。
    Advanced Custom Fieldsの複数値はクセがあるとどこかで読んだことがあったのですが、
    そのあたりに原因がありそうですね。

    実装するかどうかも要検討ですが、
    似たような状況の方の対策方法とか、もしあればとも思いますので
    もうしばらく、解決済みにしないでフォーラムに置いておこうかと思います。

    スレッド開始 d-xanthus

    (@d-xanthus)

    お世話になります。
    いろいろ試した結果、valueの値を、名前ではなくIDの設定に、またIDをダブルコーテーションでくくることで、望み通りの結果が得ることができました。
    こちらで解決済みとさせて頂きます。
    ありがとうございました。

    <?php
    $author_id = $post->post_author;//ユーザーID
    $author_name = get_the_author_meta('display_name',$author_id) ;
    
    $paged = (int) get_query_var('paged');
    $args = array(
      'paged' => $paged,
      'category_name' =>'books',//カテゴリー名
      'posts_per_page'=> -1,
      'post_type' => 'post',
      'meta_query' => array(
                            array(  'key'=>'booksWriter',//ACFのフィールド名
                                     'value'=> '"'.$author_id.'"',
                                     'compare'=>'IN',
                                )
                           )
                     );
    $posts = get_posts( $args );
    ?>
    <?php if ($posts):?>
    <?php foreach($posts as $post) : setup_postdata($post)?>
    -----------中略---------------------
    <?php endforeach;?>
    <?php endif;?>
3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック「meta_queryでACFでのカスタムフィールドの条件で抽出できない」には新たに返信することはできません。