よろしくお願いいたします。
■実現をしたいこと
不動産系サイトで使わるような絞り込み検索(AND検索)の設置を試みています。(wordpress)
絞り込み検索の検索軸
0,キーワード検索
1,エリア(大阪、京都、 etc..) カテゴリーの値を基にしたセレクトボックス
2,築年数(3年、5年 etc..) カスタムフィールドのセレクトボックスの値をもとにしたセレクトボックス
3,価格帯(上限下限金額のレンジ) カスタムフィールドのテキストボックスの値をもとにしたセレクトボックス下限数値のレンジ) カスタムフィールドのテキストボックスの値をもとにしたセレクトボックス
4,総戸数(上限
5,駅から徒歩(5分、10分 etc...) カスタムフィールドのセレクトボックスの値をもとにしたセレクトボックス
6,間取り(1DK、2DK etc..) カスタムフィールドのセレクトボックスの値をもとにしたセレクトボックス
7,こだわり条件(ペット可、新築 etc..) カスタムフィールドのチェックボックスの値をもとにしたチェックボックス
■発生している問題
上記の2、4、5、6、7の検索軸が正しく動作せず、うまく絞り込みができません。(全ての数の検索結果となる。)
どなたかご教授を頂けますでしょうか。
■使用しているコード
search.php
<?php $s = $_GET['s']; $catnum = $_GET['catnum']; $type1 = $_GET['house_year']; $type = $_GET['eki-toho']; $type2 = $_GET['madori']; $kodawari = $_GET['kodawari']; $low = $_GET['low']; $high = $_GET['high']; $low2 = $_GET['low-2']; $high2 = $_GET['high-2']; if($catnum){ $taxquerysp[] = array( 'taxonomy'=>'category', 'terms'=> $catnum, 'include_children'=>false, 'field'=>'term_id', 'operator'=>'AND' ); } $taxquerysp['relation'] = 'AND'; if($kodawari){ foreach($kodawari as $val){ $metaquerysp[] = array( 'key'=>'kodawari', 'value'=> $val, ); } } if($type){ $metaquerysp[] = array( 'key'=>'eki-toho', 'value'=> $type, 'compare'=>'=', ); } if($type2){ $metaquerysp[] = array( 'key'=>'madori', 'value'=> $type2, 'compare'=>'=', ); } if($type1){ $metaquerysp[] = array( 'key'=>'house_year', 'value'=> $type1, 'compare'=>'=', ); } $metaquerysp[] = array( 'key'=>'price', 'value'=>array( $low, $high ), 'compare'=>'BETWEEN', 'type'=>'NUMERIC', ); $metaquerysp[] = array( 'key'=>'so-to', 'value'=>array( $low-2, $high-2 ), 'compare'=>'BETWEEN', 'type'=>'NUMERIC', ); $metaquerysp['relation'] = 'AND'; ?> <?php if( 1<count($metaquerysp) ) { $metaquerysp['relation'] = 'OR'; } ?> <?php query_posts( array( 'tax_query' => $taxquerysp, 'meta_query' => $metaquerysp, 's' => $s, 'posts_per_page' => 20, 'paged' => $paged, ) ); ?> <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> <div><?php the_title(); ?></div> <div><?php the_content(); ?></div> <?php endwhile; else : ?> 該当なし <?php endif; ?>
検索の側
<form method="get" id="searchform" action="search"> <label for="s" class="serch-ttl">マンション名で検索</label> <input type="text" class="field" name="s" id="s" placeholder="検索" /> <p class="serch-ttl">エリア</p> <select name="catnum" class="search-select"> <option value="" selected>指定しない</option> <?php $categories = get_categories('parent=0'); foreach($categories as $category) : ?> <option value="<?php echo $category->term_id; ?>"><?php echo $category->cat_name; ?></option> <?php endforeach; ?> </select> <p class="serch-ttl">築年数</p> <select name="house_year" class="search-select"> <option value="" selected>指定しない</option> <option value="新築">新築</option> <option value="3年以内">3年以内</option> <option value="5年以内">5年以内</option> <option value="10年以内">10年以内</option> <option value="20年以内">20年以内</option> <option value="30年以内">30年以内</option> </select> <p class="serch-ttl">価格帯</p> <select name="low" class="search-select range"> <option value="0" selected>下限なし</option> <option value="500">500万以上</option> <option value="1000">1,000万以上</option> <option value="2000">2,000万以上</option> <option value="3000">3,000万以上</option> <option value="4000">4,000万以上</option> <option value="5000">5,000万以上</option> <option value="6000">6,000万以上</option> <option value="7000">7,000万以上</option> <option value="8000">8,000万以上</option> <option value="9000">9,000万以上</option> </select> <p class="kara">~</p> <select name="high" class="search-select range"> <option value="500">500万以下</option> <option value="1000">1,000万以下</option> <option value="2000">2,000万以下</option> <option value="3000">3,000万以下</option> <option value="4000">4,000万以下</option> <option value="5000">5,000万以下</option> <option value="6000">6,000万以下</option> <option value="7000">7,000万以下</option> <option value="8000">8,000万以下</option> <option value="9000">9,000万以下</option> <option value="9999999" selected>上限なし</option> </select> <p class="serch-ttl">総戸数</p> <select name="low-2" class="search-select range"> <option value="0" selected>下限なし</option> <option value="50">50戸以上</option> <option value="100">100戸以上</option> <option value="200">200戸以上</option> <option value="300">300戸以上</option> </select> <p class="kara">~</p> <select name="high-2" class="search-select range"> <option value="50">50戸以下</option> <option value="100">100戸以下</option> <option value="200">200戸以下</option> <option value="300">300戸以下</option> <option value="9999999" selected>上限なし</option> </select> <p class="serch-ttl">駅から徒歩</p> <select name="eki-toho" class="search-select"> <option value="" selected>指定しない</option> <option value="5分以内">5分以内</option> <option value="10分以内">10分以内</option> <option value="15分以内">15分以内</option> <option value="30分以内">30分以内</option> <option value="30分以上">30分以上</option> </select> <p class="serch-ttl">間取り</p> <select name="madori" class="search-select"> <option value="" selected>指定しない</option> <option value="1K/DK/LDK">1K/DK/LDK</option> <option value="2K/DK/LDK">2K/DK/LDK</option> <option value="3K/DK/LDK">3K/DK/LDK</option> <option value="4K/DK/LDK">4K/DK/LDK</option> <option value="5K/DK/LDK">5K/DK/LDK</option> </select> <p class="serch-ttl">こだわり条件</p> <label class="checkLabel"><input type="checkbox" name="kodawari[]" value="タワーマンション">タワーマンション</label> <label class="checkLabel"><input type="checkbox" name="kodawari[]" value="低層マンション">低層マンション</label> <label class="checkLabel"><input type="checkbox" name="kodawari[]" value="ハイグレードマンション">ハイグレードマンション</label> <label class="checkLabel"><input type="checkbox" name="kodawari[]" value="駅近">駅近</label> <label class="checkLabel"><input type="checkbox" name="kodawari[]" value="新築・築浅">新築・築浅</label> <label class="checkLabel"><input type="checkbox" name="kodawari[]" value="ぺット飼育化">ぺット飼育化</label> <label class="checkLabel"><input type="checkbox" name="kodawari[]" value="大規模">大規模</label> <input type="submit" class="submit" name="submit" id="searchsubmit" value="検索" /> </form>
■試したこと
var_dump($metaquerysp); var_dump($s);
出力結果
array(3) { [0]=> array(4) { ["key"]=> string(5) "price" ["value"]=> array(2) { [0]=> string(1) "0" [1]=> string(7) "9999999" } ["compare"]=> string(7) "BETWEEN" ["type"]=> string(7) "NUMERIC" } [1]=> array(4) { ["key"]=> string(5) "so-to" ["value"]=> array(2) { [0]=> int(-2) [1]=> int(9999997) } ["compare"]=> string(7) "BETWEEN" ["type"]=> string(7) "NUMERIC" } ["relation"]=> string(2) "OR" } string(0) ""
var_dump($taxquerysp); var_dump($s);
出力結果
array(1) { ["relation"]=> string(3) "AND" } string(0) ""
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/07/24 15:18
2019/07/24 15:40
2019/07/25 00:18
2019/07/25 01:20
2019/07/25 14:46