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
-
検索したいのであれば、キャンペーン情報はカスタム投稿タイプを使用する設計にすべきでしょう。
説明不足でした。申し訳ございません。
カスタム投稿タイプの中に店舗情報を投稿してその中でキャンペーン情報をいれている感じです。ですので店舗情報とキャンペーン情報はセットの状態がベストです。
それと検索機能は必要なく、ただ一覧で表示した際の順序を変更したいということです。ACFのドキュメントに、
http://www.advancedcustomfields.com/resources/how-to-sorting-a-repeater-field/
こんな記事がありました。Repeaterフィールドをget_field()で取ると、その子要素が配列で帰ってくるので、array_multisortで頑張る格好です。
- トピック「Advanced Custom FieldsのRepeater Fieldの値でソートしたい」には新たに返信することはできません。