配列のカスタムフィールドに対して絞込み表示
-
チェックボックスのカスタムフィールドを作成し、その値に対して「meta_query」で絞込み検索を行いたいのですが、「meta_query」の「value」に配列を指定すると絞込み表示ができなく困っております。
「value」を単体指定するとうまく絞込み表示ができます。
「value」の値は、検索フォームから複数選択可能な項目より値が渡されます。調べたところ配列のカスタムフィールドはシリアライズされており、絞込みが難しいとのことですが、何か方法がありましたらご教授いただけますでしょうか。
■検索の流れ
検索フォームページ
※項目はチェックボックスで作成
↓ GET送信
検索結果
※下記コードでは、うまく絞込み表示ができました。
// 絞込みデータ取得 $s_args = array( 'post_type' => 'test', 'meta_query' => array( 'key' => 'fruit', 'value' => 'りんご', 'compare' => 'LIKE', ), 'relation' => 'AND', 'posts_per_page' => -1, ); $the_query = new WP_Query($s_args);
下記コードでは、投稿データが取得できませんでした。
// 絞込みデータ取得 $s_args = array( 'post_type' => 'test', 'meta_query' => array( 'key' => 'fruit', 'value' => array('りんご'), 'compare' => 'IN', ), 'relation' => 'AND', 'posts_per_page' => -1, ); $the_query = new WP_Query($s_args);
下記コードでは、投稿データがすべて表示され「Warning」エラーが表示されました。
// 絞込みデータ取得 $s_args = array( 'post_type' => 'test', 'meta_query' => array( 'key' => 'fruit', 'value' => array('りんご'), 'compare' => 'REGEXP', ), 'relation' => 'AND', 'posts_per_page' => -1, ); $the_query = new WP_Query($s_args);
■「Warning」エラー
Warning: trim() expects parameter 1 to be string, array given in [ファイルパス]/wp-includes/class-wp-meta-query.php====================================================
「LIKE]では絞込みができるので「検索フォーム」から選択された項目の数を数えて1つ以上選択されていた場合、下記のように配列を追加する方法で対応ができましたが、他に良い方法があればお教えいただきたいです。$item= $_GET['item']; // 検索フォームから項目を取得 $item_num = count($item); if ($item_num === 1) { $meta_ary[] = array( 'key' => 'test', 'value' => $item[0], //選択された項目が1つなら一番初めのの項目を「value」に指定 'compare' => 'LINK', ); } else { // 複数選択されていた場合、「foreach」ループで1つずつ配列を作成し、最後にまとめて「meta_query」用の値配列に追加する $meta_ary[] = array('relation' => 'AND'); $meta_match_key = array(); foreach ($item as $item_value) { array_push($meta_match_key, array( 'key' => 'test', 'value' => $item_value, 'compare' => 'LINK', )); } $meta_ary[0] += $meta_match_key; }
1件の返信を表示中 - 1 - 1件目 (全1件中)
1件の返信を表示中 - 1 - 1件目 (全1件中)
- トピック「配列のカスタムフィールドに対して絞込み表示」には新たに返信することはできません。