前提・実現したいこと
通常の投稿機能にAdvanced Custom Fieldsでカスタムフィールドを追加し、それを条件に絞り込み検索ができるようした行っているのですが、うまくいかず悩んでおります。
発生している問題
1つのカスタムフィールドからのみであれば検索できるのですが、複数のカスタムフィールドを指定すると、全ての記事が表示されてしまう状態です。
検索フォームで記載している内容
※search01等はACFのフィールド名部分になっています。
<form role="search" method="get" id="searchform" action="<?php bloginfo('url'); ?>" > <input type="hidden" name="s" id="s" placeholder="検索" /> <table class="shosai"> <tr> <th>エリア</th> <td> <select name="search01"> <option value="sch01a">横浜</option> <option value="sch01b">川崎</option> <option value="sch01c">藤沢</option> </select> </td> </tr> <tr> <th>間取り</th> <td> <select name="search02"> <option value="sch02a">1K・1DK・1LDK</option> <option value="sch02b">2K・2DK・2LDK</option> <option value="sch02c">3K以上</option> </select> </td> </tr> <tr> <th>階数</th> <td> <select name="search03"> <option value="sch03a">1階</option> <option value="sch03b">2階以上</option> </select> </td> </tr> <tr> <th>駐車場</th> <td> <select name="search04"> <option value="sch04a">有り</option> <option value="sch04b">無し</option> </select> </td> </tr> </table> <button type="submit" value="" id="submit" /> この条件で検索する </button> </form>
search.phpで記載している内容
<?php $keyWords = $_GET['s']; $post_type = 'post'; // エリア部分 $keywords[] = array( 'key' => 'search01', 'value' => $keyWords, 'compare' => 'like', ); // 間取り部分 $keywords[] = array( 'key' => 'search02', 'value' => $keyWords, 'compare' => 'like', ); // 階数部分 $keywords[] = array( 'key' => 'search03', 'value' => $keyWords, 'compare' => 'like', ); // 駐車場部分 $keywords[] = array( 'key' => 'search04', 'value' => $keyWords, 'compare' => 'like', ); $keywords['relation'] = 'OR'; $metaquery[] = $keywords; $metaquery['relation'] = 'AND'; global $wp_query; query_posts(array( 'post_type' => $post_type, 'meta_query' => $metaquery, 'posts_per_page' => -1, ) ) ;?>
試行錯誤で色々と方法を試しておりますが、どうにもうまく行かず…。
ご教授頂ければ幸いで御座います。
よろしくお願い致します。
あなたの回答
tips
プレビュー