サポート » 使い方全般 » query_postsでの複数検索について

  • いつもお世話になっております。
    query_postsでの複数検索についてで、
    年齢(10代〜、20代〜)、
    身長(160cm〜、170cm〜)、
    体重(50kg〜、60kg〜)

    と複数チェックボックスがあるとして、

    年齢が10代で身長が160cmという全てに合致する検索(AND)はできるのですが
    例えば、10代〜、20代〜で身長が160cmを選択すると、

    年齢が10代〜、20代〜のカテゴリが存在しないため、
    検索ヒットされません。

    やりたいことは、
    年齢、身長、体重というグループの内部はIN
    年齢、身長、体重のグループ毎の検索はAND

    をしたいのですが、どのようなロジックを組んだら良いでしょうか。

    以下実際に記述したコードを基にアドバイスを頂けると幸いです。

    変数$age_numは年齢(10代〜、20代〜)でチェックした配列を格納
    変数$tall_numは身長(160cm〜、170cm〜)でチェックした配列を格納
    変数$weight_numは体重(50kg〜、60kg〜)でチェックした配列を格納

    しております。
    現時点では検索ヒットしません、、

    $args = array(
    	'posts_per_page' => 40,
    	'post_type' => 'post',
    	'paged' => $result_terms,
    	'orderby' => 'date',
    	'order' => 'desc',
    	'tax_query' => array(
    			'relation' => 'AND',
    			array(
    				'taxonomy'=>'category',
    				'terms'=>array('会員'),
    				'field'=>'slug',
    				'operator'=>'IN'
    				),
    			array(
    				'taxonomy'=>'category',
    				'terms'=>$age_num,
    				'include_children'=>false,
    				'field'=>'term_id',
    				'operator'=>'IN'
    				),
    			array(
    				'taxonomy'=>'category',
    				'terms'=>$tall_num,
    				'include_children'=>false,
    				'field'=>'term_id',
    				'operator'=>'IN'
    				),
    			array(
    				'taxonomy'=>'category',
    				'terms'=>$weight_num,
    				'include_children'=>false,
    				'field'=>'term_id',
    				'operator'=>'IN'
    				)
    			)
    		);
2件の返信を表示中 - 1 - 2件目 (全2件中)
  • あってるかどうかわからないので参考までにとどめてください。

    [解決済み] カスタムフィールドの値で除外検索をしたい
    http://ja.forums.wordpress.org/topic/10582?replies=5

    このようにカスタムフィールドで値をいれ、

    テンプレートタグ/query posts

    このページに

    meta_compare (string) – ‘meta_value=’ で指定された値を比較する演算子。デフォルトは ‘=’ で, ‘!=’、’>’、’>=’、'<‘、'<=’ も使える。

    とあるように、演算子で比較して絞り込む、というのはできないかなあ、と思ったりしました。
    でもクロス検索はかなり難しいので、ある程度カスタムフィールドに条件を入れてしまうのが手っ取り早いのではないかと思います。

    トピック投稿者 sensensen

    (@sensensen)

    ご連絡ありがとうございます!!
    とても参考になりました!!

    私のサンプルが簡素だったため、数値だけの判断で出来そうだと思いましたが、

    その他、

    (タバコを吸う、タバコを吸わない)
    (Aカップ、Bカップ〜)

    という選択項目があります^^;

    恐らく演算子で処理できるような気がしませんでした、、、

    >でもクロス検索はかなり難しいので、ある程度カスタムフィールドに条件を入れてしまうのが手っ取り早いのではないかと思います。

    上記でやってみると、
    (タバコを吸う、タバコを吸わない)
    (Aカップ、Bカップ〜)
    を含めたクロス検索はうまく出来そうですか??

    自分にはカスタムフィールドを使った手っ取り早い方法が思いつかないです、、

    簡単で良いのでアドバイスいただけないでしょうか、、、

    どうぞよろしくお願いします!

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「query_postsでの複数検索について」には新たに返信することはできません。