サポート » 使い方全般 » 複数条件検索

  • mituru0622

    (@mituru0622)


    いろいろな方のお力をいただきながら複数の条件検索を作成することが
    できました。

    ただ、同時に複数条件で検索をした場合、「サイトに技術的な問題があります」と表示されてしまいます。
    (例えば、建築面積と構造種別をそれぞれ選択して検索すると、生じます)

    下記がfunctions.phpの検索に関する項目です。

    //検索に関する項目
    //A
    function custom_search($search, $wp_query) {
        //検索ページ以外で終了
        if (!$wp_query->is_search) return;
    
    if (!empty($_REQUEST['kozo-type'])) {
        $meta_text = "'%" .mysql_real_escape_string($_REQUEST['kozo-type']). "%'";
        $search .= "
            AND wp_postmeta.meta_key = 'kozo-type'
            AND wp_postmeta.meta_value LIKE {$meta_text}";
    }
    
        //カスタムフィールド(建築面積)で検索
        if (!empty($_REQUEST['building-area'])) {
            $meta_price = intval($_REQUEST['building-area']);
            $mate_pricelow = $meta_price - 100;
            $search .= "
                AND wp_postmeta.meta_key = 'building-area'
                AND wp_postmeta.meta_value BETWEEN {$mate_pricelow} AND {$meta_price}
            ";
        }
        //カスタムフィールド(延床面積)で検索
        if (!empty($_REQUEST['total-floor-area'])) {
            $meta_price = intval($_REQUEST['total-floor-area']);
            $mate_pricelow = $meta_price - 100;
            $search .= "
                AND wp_postmeta.meta_key = 'total-floor-area'
                AND wp_postmeta.meta_value BETWEEN {$mate_pricelow} AND {$meta_price}
            ";
        }
    //カスタムフィールド(間口)で検索
        if (!empty($_REQUEST['short-side'])) {
            $meta_price = intval($_REQUEST['short-side']);
            $mate_pricelow = $meta_price - 4;
            $search .= "
                AND wp_postmeta.meta_key = 'short-side'
                AND wp_postmeta.meta_value BETWEEN {$mate_pricelow} AND {$meta_price}
            ";
        }
    //カスタムフィールド(奥行き)で検索
        if (!empty($_REQUEST['long-side'])) {
            $meta_price = intval($_REQUEST['long-side']);
            $mate_pricelow = $meta_price - 4;
            $search .= "
                AND wp_postmeta.meta_key = 'long-side'
                AND wp_postmeta.meta_value BETWEEN {$mate_pricelow} AND {$meta_price}
            ";
        }
    //カスタムフィールド(最高の高さ)で検索
        if (!empty($_REQUEST['height'])) {
            $meta_price = intval($_REQUEST['height']);
            $mate_pricelow = $meta_price - 5;
            $search .= "
                AND wp_postmeta.meta_key = 'height'
                AND wp_postmeta.meta_value BETWEEN {$mate_pricelow} AND {$meta_price}
            ";
        }
        return $search;
    }
    add_filter('posts_search','custom_search', 10, 2);
    
    function custom_search_join($join){
        if(!empty($_REQUEST['building-area']) || !empty($_REQUEST['total-floor-area']) || !empty($_REQUEST['short-side']) || !empty($_REQUEST['long-side']) || !empty($_REQUEST['height']) || !empty($_REQUEST['kozo-type'])) {
            $join .= "INNER JOIN wp_postmeta ON (wp_posts.ID = wp_postmeta.post_id)";
        }
        return $join;
    }
    add_filter( 'posts_join', 'custom_search_join' );
    

    よろしくお願いいたします。

    ヘルプの必要なページ: [リンクを見るにはログイン]

5件の返信を表示中 - 1 - 5件目 (全5件中)
5件の返信を表示中 - 1 - 5件目 (全5件中)
  • このトピックに返信するにはログインが必要です。