サポート » 使い方全般 » カスタムフィールドを使用した複数選択の絞り込み検索ができない

  • カスタムフィールドテンプレートにて、投稿に地域(area)とサービス(service)のチェックボックスを配置しています。
    例えば、北海道と四国でサービス1とサービス3の会社を検索したいのですが、うまくいきません。
    似たような質問はあるのですが、解決できず、質問いたします。

    ◆検索ページテンプレート

    <form method="get" id="searchform" action="<?php bloginfo('url'); ?>">
    
    <input type="hidden" name="s" id="s" placeholder="検索" />
    ■サービスから検索
    <input type="checkbox" name="service[]" value="サービス1"><label>サービス1</label>
    <input type="checkbox" name="service[]" value="サービス2"><label>サービス2</label>
    <input type="checkbox" name="service[]" value="サービス3"><label>サービス3</label>
    <input type="checkbox" name="service[]" value="サービス4"><label>サービス4</label>
    
    ■地域から検索
    
    <input type="checkbox" name="area[]" value="北海道"><label> 北海道</label>
    <input type="checkbox" name="area[]" value="東北"><label> 東北</label>
    <input type="checkbox" name="area[]" value="関東"><label> 関東</label>
    <input type="checkbox" name="area[]" value="甲信越"><label> 甲信越</label>
    <input type="checkbox" name="area[]" value="北陸"><label> 北陸</label>
    <input type="checkbox" name="area[]" value="中部"><label> 中部</label>
    <input type="checkbox" name="area[]" value="近畿"><label> 近畿</label>
    <input type="checkbox" name="area[]" value="中国"><label> 中国</label>
    <input type="checkbox" name="area[]" value="四国"><label> 四国</label>
    <input type="checkbox" name="area[]" value="九州・沖縄"><label> 九州・沖縄</label>
    </tr></table>
    
    <input type="submit" value="検索" />

    ◆search.php

    <?php
    $s = $_GET['s'];
    $service = $_GET['service'];
    $area = $_GET['area'];
    
    if($service){
        foreach($service as $val){
            $metaquerysp[] = array(
                    'key'=>'service',
                    'value'=> $val,
                    );
        }
    }
    
    if($area){
        foreach($area as $val){
            $metaquerysp[] = array(
                    'key'=>'area',
                    'value'=> $val,
                    );
        }
    }
    $metaquerysp['relation'] = 'AND';
    ?>
    
                <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
    
    <div class="entry-content">
    <h2><?php the_title(); ?></h2>
    </div><!-- .entry-content -->
    
                <?php endwhile; else : ?>
    
    見つかりません。
    
                <?php endif;wp_reset_query(); ?>

    現状では、複数チェックでエラーが出るどころか、一つ選択しても「見つかりません」となってしまいます。
    例えば、「サービス1」のみで検索した場合、そのURLは「ホームURL/?s=&service[]=サービス1」となります。

    何がいけないのでしょうか?
    よろしくお願いいたします。

1件の返信を表示中 - 1 - 1件目 (全1件中)
  • search.php のコードは、ご自分で書かれたのでしょうか、それとも、どこかからコピーしたものですか? if ($service)以下の部分が何をしようとしているか、理解できますか?

    search.php というのは、検索結果を表示することしかできませんので、実際に検索を実行するコードは別のところ、たとえば、functions.php などに書かなければ動作しません。

1件の返信を表示中 - 1 - 1件目 (全1件中)
  • トピック「カスタムフィールドを使用した複数選択の絞り込み検索ができない」には新たに返信することはできません。