サポート » プラグイン » Advanced Custom FieldsのRepeater Fieldの値でソートしたい

  • Advanced Custom FieldsのRepeater Fieldで作成したカスタムフィールドの日付を使ってソートをしたいのですがうまく行きません。

     やりたいこととしては3つのカスタム投稿タイプにそれぞれ”店舗情報”と”キャンペーン情報”(無い店舗もあります)が入っていて。キャンペーン情報はRepeater Fieldを使って、キャンペーンの内容とキャンペーン期間のスタートと終わりの日付を入力できるようにしています。

     それらをすべて一覧表示して、上位にはキャンペーンのあるお店、下位にそれ以外のお店の順で並べたいのですがうまくいきません。キャンペーンのあるお店とそれ以外を分けることができれば、それぞれの中での順番はこだわりはありません。

     現在は色々調べて以下のコードでRepeater Fieldから日付のフィールドをとってきて、その値でソートようとしていたのですが、記事が見当たらない状態になります。
     ちなみのこの方法がうまくいってもキャンペーンの無いお店は表示されない気がします。。。
    他の方法でも結構ですので、何かいい方法があれば教えていただければと思います。ちなみにキャンペーンのあるお店には”キャンペーンあり”のタームもついています。そっちを利用した方法などのほうがいいのでしょうか?よろしくお願い致します。

    参考にしたサイト
    http://www.advancedcustomfields.com/resources/query-posts-custom-fields/

    <?php
    function my_posts_where( $where ) {
     $where = str_replace("meta_key = 'dates_%", "meta_key LIKE 'dates_%", $where);
     return $where;
    }
    add_filter('posts_where', 'my_posts_where');
    ?>
    
    <?php
    $arg = array(
     'post_type' => array('投稿名1','投稿名2','投稿名3'),
     'showposts' => 10,
     'meta_key'=> 'dates_%_スタートの日付の入ったフィールド名',
     'orderby' => 'meta_value',
     );
     $args = new WP_Query( $arg ); ?>
    <?php if ($args->have_posts()) : ?>
    <?php while ( $args->have_posts() ) : $args->the_post(); ?>

    【環境】
    WordPress 4.2.3
    PHP 5.5.10
    Advanced Custom Fields 4.3.8

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • モデレーター Takuro Hishikawa

    (@hissy)

    検索したいのであれば、キャンペーン情報はカスタム投稿タイプを使用する設計にすべきでしょう。

    トピック投稿者 coz

    (@coz)

    説明不足でした。申し訳ございません。
    カスタム投稿タイプの中に店舗情報を投稿してその中でキャンペーン情報をいれている感じです。ですので店舗情報とキャンペーン情報はセットの状態がベストです。
    それと検索機能は必要なく、ただ一覧で表示した際の順序を変更したいということです。

    ACFのドキュメントに、

    http://www.advancedcustomfields.com/resources/how-to-sorting-a-repeater-field/

    こんな記事がありました。Repeaterフィールドをget_field()で取ると、その子要素が配列で帰ってくるので、array_multisortで頑張る格好です。

    トピック投稿者 coz

    (@coz)

    Toro_Unitさん

    回答ありがとうございます。上記リンク確認させていただきました。
    この方法はリピーターフィールド同士のソートができる感じで、
    リピーターフィールドの値を元に投稿自体のソートを変更するには、
    array_maultisortで頑張る格好ですよね?勉強不足のためよくわかりませんでした。array_maultisortあたりを少し調べて色々試してみます。ありがとうございました。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「Advanced Custom FieldsのRepeater Fieldの値でソートしたい」には新たに返信することはできません。