ACFプラグインのRepeater Fieldを使ったQuery制御
-
投稿にプラグイン Advanced Custom Fields PROの、
リピーターフィールドを使用してカテゴリとエリアを以下のように登録しています。
categoryとareaはチェックボックスにしています。記事Aのリピーターフィールド
name | category | area
1 | a,b | B,A
2 | b,c | A,C
3 | b,c | A,C記事Bのリピーターフィールド
name | category | area
1 | b,c | A,C
2 | b,c | B,C
3 | a,c | A,Cこの記事をクエリーで絞り込む際に
リピーターフィールド内のサブフィールドの値で絞り込みを行いたいです。
具体的には、
categoryが「a」でareaが「B」に該当する記事を絞り込み
記事A(name1が両方該当)のみを絞り込む動きを表現したいです。プラグインのサイト内で近いコードを見つけて以下のように書いているのですが、
これだと
記事Bのname3のcategoryに「a」が入り、name2のareaに「B」が入っているため
同一のnameに値が属していない記事Bもクエリーの対象となってしまいます。以下のコードを元に記事Aのみを絞り込む方法は無いでしょうか?
対策として未入力用のサブフィールド(テキスト) fooをリピーターフィールド内に1つ追加して
記事を更新したタイミングでcategoryとareaの値を結合してサブフィールドfooに登録。
クエリーの絞り込みはfooを元に絞り込む方法は思いついています。
ですが、出来ればサブフィールドを追加しないでクエリーによる絞り込みが理想です。
いい方法はないものでしょうか・・・。アドバイスよろしくお願いします。
function my_posts_where( $where ) { $where = str_replace("meta_key = 'foo_%", "meta_key LIKE 'foo_%", $where); return $where; } add_filter('posts_where', 'my_posts_where'); // args $args = array( 'numberposts' => -1, 'post_type' => 'event', 'meta_query' => array( 'relation' => 'AND', array( 'key' => 'foo_%_category', 'compare' => 'LIKE', 'value' => '11', ), array( 'key' => 'foo_%_area', 'compare' => 'LIKE', 'value' => '22', ) ) );
- トピック「ACFプラグインのRepeater Fieldを使ったQuery制御」には新たに返信することはできません。