• wordpressの不動産プラグインのフリーワード検索機能の検索対象の拡張について
    質問させていただきたいと思います。

    【やりたいこと】
    wordpressの不動産プラグインという、物件情報検索プラグインを使って、不動産サイトを構築していますが、
    その中で、フリーワード検索の機能に関しては、どうやら本文やタイトルなどを対象にしていて、
    カスタムフィールドになった、面積や周辺環境などのデータはデフォルトでは検索対象になってないようです。

    そこで、検索対象を拡張して、周辺環境や町名などの文字列を拾えるようにしたいです。

    【課題】
    ・基本的に物件一覧や絞り込み検索の結果のように、価格帯や間取りなどの項目をベースにしたソート機能が、
    不動産プラグインには入っているのですが、それを外して、wordpressの元々のワード検索の検索結果を
    表示することはNGです。
    (やってみましたが、担当の方の意向でソート機能は入れたいとのことでした。)

    従って、↑を達成するためには一番可能性があるのは、既存の一覧ページのテンプレートを当たる方がいいかなぁと
    思っています。
    他に簡単な方法やその他あれば教えていただけると助かります。
    よろしくお願いします。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • ヒントになるか分かりませんが…

    不動産プラグインのデータをいじると、検索対象に小学校などを含むことは可能なようでした。
    ただ、検索対象が増えるのと、物件数が多くなるとやっぱり動作が重くなるようです。

    というのを踏まえて、
    wp-content/plugins/fudou/themes/archive-fudo.php
    の中を弄ればいけました。

    その中に検索対象に関する記述がありますが、そこを下記のような感じで弄るといけました。
    AND検索等が以下のままではいけないので、町名とかは使いにくいかもしれませんね。
    ●●区■■町的な使い方が物件タイトル次第でできなくなるので、そこの解決方法もいい案があれば、いいんですけどね。

    ■■■検索対象の修正をやってみたコード■■■

    if($bukken_slug_data=="search" && $s !=''){
    
    		$searchtype = $_GET['st'];
    
    		//価格・面積・築年月
    			$sql = "SELECT count(DISTINCT P.ID) as co";
    			$sql .=  " FROM (($wpdb->posts AS P";
    			$sql .=  " INNER JOIN $wpdb->postmeta AS PM   ON P.ID = PM.post_id) ";
    			$sql .=  " INNER JOIN $wpdb->postmeta AS PM_1 ON P.ID = PM_1.post_id) ";
    
    		if($searchtype == ''){
    			$sql .=  " INNER JOIN $wpdb->postmeta AS PM_2 ON P.ID = PM_2.post_id";
    		}
    			$sql .=  " WHERE P.post_status='publish' AND P.post_password = ''  AND P.post_type ='fudo' ";
    			$sql .=  " AND PM.meta_key='$bukken_sort_data'";
    
    		if($searchtype == ''){
    			$sql .=  " AND  ( ";
    			$sql .=  "          P.post_content LIKE '%$s%' OR P.post_title LIKE '%$s%' ";
    			$sql .=  "      OR  P.post_excerpt LIKE '%$s%' ";
    			$sql .=  "      OR (PM_1.meta_key='shikibesu' AND PM_1.meta_value LIKE '%$s%' )";
    			$sql .=  "      OR (PM_2.meta_key='bukkenmei' AND PM_2.meta_value LIKE '%$s%' )";
    			$sql .=  "      OR (PM_1.meta_key='shuuhenshougaku' AND PM_1.meta_value LIKE '%$s%' )";
    			$sql .=  "      OR (PM_1.meta_key='shuuhenchuugaku' AND PM_1.meta_value LIKE '%$s%' )";
    			$sql .=  "      OR (PM_1.meta_key='shozaichimeisho' AND PM_1.meta_value LIKE '%$s%' )";
    			$sql .=  "     )";
    		}
    トピック投稿者 tantakatan0422

    (@tantakatan0422)

    わざわざ詳しく書いて頂きましてありがとうございます。

    一度、tak7910さんのをヒントに試してみたいと思います。

    確かにその仕様でしたらそうですね。

    また引き続き質問してみます。

    あれから性懲りもなく暇を見つけて、AND検索の部分を試してみてますが…
    例えばなんですが、
    $sql .= " OR (PM_1.meta_key='shozaichimeisho' AND PM_1.meta_value LIKE '%$s%' )";
    ここだけだと町名(●●区■■町)の■部分しか対象にできないので、区はできてないと思います。
    所在地住所を構成するのは間違ってたら申し訳ないですが、大まかに言うと、
    1.都道府県部分
    2.市区郡町村
    3.町名以下
    になると思いますが、1,2に関しては、項目選択が用意されていて、3.に関しては
    自由入力になっていると思います。

    先ほどのコードだけだと、3は引っ張れるのですが、1,2は検索されていないと
    考えられますので、いろいろ試してみてはいるんですが…

    例えば福岡市などで検索すると検索できなかったので、上手くいってない状況です。
    区なんかはタイトルに入ってる場合はヒットしますが、それ以外はヒットしないと思います。

    まぁ、●●市とか、▲▲区とかがきちんと検索できれば上手くいきそうな気はしますね。
    まだおやくに立てずに申し訳ないですが、もうちょい探してみます。

    ■追記

    ↑の2に関しては、●●市▲▲区など、都道府県を大エリア、市区町村を中エリアとして、別のファイルにそれぞれコードとエリア名を記載して、それを参照して呼び出す仕組みになっているようです。
    というのを踏まえて、shozaichicodeという変数で検索できるというところまでは辿りつきました。
    それでファイルを参考に108などの市区コードを入れてみると検索にヒットします。
    これが文字列に置き換えられたら上手くいくのかなぁとは思うのですが…

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「不動産プラグイン 検索機能について」には新たに返信することはできません。