サポート » テーマ » search.phpの結果をカスタムフィールドで絞り込む方法

  • 解決済 mc_urara

    (@mc_urara)


    search.phpの絞り込み検索をカスタマイズしたいと思っています。

    カスタムフィールドの値が以下とします。
    【店舗名】   【地区名】
     さくら花店   北区
     うめ花店    南区
     なしカフェ   北区
     いちごカフェ  南区
     ももカフェ   中区
    の場合、

    「カフェ」で検索した結果
     なしカフェ   北区
     いちごカフェ  南区
     ももカフェ   中区

    で表示されるるのですが、
    ここへ地区名の絞り込みを加えたいです。

    複数の地区で絞り込みたいので下記のように記述をしたのですが、
    検索結果がおかしなことになります。
     $args = array(
      ’meta_query’ => array(
       ’relation’ => ‘AND’,
        array(
         ’key’ => ‘地区名’,
         ’value’ => ‘北区’,
         ’compare’ => ‘LIKE’
        ),
        ’relation’ => ‘OR’,
        array(
         ’key’ => ‘地区名’,
         ’value’ => ‘南区’,
         ’compare’ => ‘LIKE’
        )
      )
     );
    query_posts($query_string.$args)

    また、下記のように記述すれば絞り込みができるのですが、
    この場合での複数の地区名の絞り込み検索の方法が解りません。
    query_posts($query_string.”&meta_key=地区名&meta_compare=like&meta_value=北区”)

    もし、
    query_posts($query_string.”&meta_key=地区名&meta_compare=like&meta_value=北区”)
    と、
    query_posts($query_string.”&meta_key=地区名&meta_compare=like&meta_value=南区”)
    の結果をあわせたものを取得したい場合はどうすればいいのか、
    ご存知の方がいらっしゃいましたらお教え下さると助かります。

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

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

    (@gatespace)

    http://ja.forums.wordpress.org/topic/57605?replies=10

    上記例はユーザーのクエリですが、meta_queryは同じだと思います。
    参考にしてみてはどうですか?

    トピック投稿者 mc_urara

    (@mc_urara)

    gatespace様

    返信が遅くなり、申し訳ございません。
    参考例をありがとうございます!!

    チェックボックスの値で検索をしたかったので、
    何とか配列で絞り込みたかったんです。
    valueを配列で指定する方法が解り、
    おかげ様で解決できそうです。

    私自身がきちんとWordpressを理解していないので、
    非常にお恥ずかしい話ですが、
    query_posts($query_string)に、
    既に「s=×××」がセットされている状態で、
    $prm = array(‘北区’,’中区’);
    $args = array(
     ’meta_query’ => array(
       ’relation’ => ‘AND’,
       array(
        ’key’ => ‘地区’,
        ’value’ => $prm,
        ’compare’ => ‘IN’
       )
     )
    );
    query_posts($query_string.$args)
    としようとした事も、うまくいかない原因だったようです(考え違いかもしれません)。

    正しい方法では無いのかもしれませんが、下記の方法で解決しました。
    $prm = array(‘北区’,’中区’);
    $args = array(
     ’meta_query’ => array(
      ’relation’ => ‘OR’,
       array(
        ’key’ => ‘店舗名’,
        ’value’ => $search_text,
        ’compare’ => ‘LIKE’
       ),
       ’relation’ => ‘AND’,
       array(
        ’key’ => ‘地区’,
        ’value’ => $prm,
        ’compare’ => ‘IN’
       )
     )
    );
    query_posts($args);//実行

    もう少しテストをしてみます。
    本当にありがとうございました。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「search.phpの結果をカスタムフィールドで絞り込む方法」には新たに返信することはできません。