サポート » 使い方全般 » サイト内検索で、"Indeed”のような2つのキーワード入力欄から検索させ

  • 解決済 twilightranigh

    (@twilightranigh)


    Indeed(http://jp.indeed.com/)のように、2つのキーワード入力欄からのサイト内検索をWordPressに実装したいとクライアント様よりご要望をいただいております。

    下記のコードを試してみたところ、、、

    <form method=”get” action=”<?php bloginfo(‘url’); ?>/”>
    <input type=”text” id=”keyword” name=”s[]” value=””/>
    <input type=”text” id=”place” name=”s[]” value=””/>
    <input type=”submit” value=”検索”>
    </form>

    検索結果ページのURLが下記のようになってしまい、現状うまくいっておりません。
    (”s=”が2つ表示されてしまいます)

    https://ドメインt/?s%5B%5D=%E6%B8%8B%E8%B0%B7&s%5B%5D=cad

    WordPressでも、Indeedのように2つのキーワード入力欄からのサイト内検索を実装することは可能でしょうか?皆さまのお力添えをいただけますと幸いです。

    少々急を要しておりまして、お忙しい中恐れ入りますが、どうぞよろしくお願いいたします。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • モデレーター jim912

    (@jim912)

    2つの入力欄が、共にタイトル、本文を対象としたものであれば、

    function join_search_keywords() {
    	if ( ! is_admin() && isset( $_GET['s'] ) && is_array( $_GET['s'] ) ) {
    		$_GET['s'] = implode( ' ', $_GET['s'] );
    	}
    }
    add_action( 'init', 'join_search_keywords' );

    を functions.php に記述すれば、2つのキーワードを、一旦内部で結合し、記事の抽出時には、再度分割してAND検索するようになるはずです。

    Indeedのように、片方がエリアなど選択式の場合は、その項目はカスタム分類として、フォームのname属性は、自由入力欄が s、選択式の方は、カスタム分類のタクソノミー名などとすれば実現できます。

    トピック投稿者 twilightranigh

    (@twilightranigh)

    jim912 様

    ご返信遅くなってしまい申し訳ございません。
    ご投稿いただき誠にありがとうございます。

    おっしゃっていただいたように、今回は地域に関しましても、タイトル・本文を対象にしたフリーワード検索(ただし、プラグイン:Search Everythingを使用して検索対象範囲は拡げております)を想定しております。

    ご提示いただいたコードをfunctions.phpにいれてみましたところ、特に変化はないようです。
    検索結果のページのソースにも変更を加えたほうがいいのでしょうか。

    トピック投稿者 twilightranigh

    (@twilightranigh)

    本件、さきほど自己解決いたしました。

    name=”s” を、type=”hidden”の<input>に設定し、キーワードと地域をJavaScriptで結合し、name=”s”に入れるようにいたしました。

    【JS】

    <script type=”text/javascript”>
    function schange(txt){
    var frm = txt.form;
    frm.s.value = frm.keyword.value + ‘ ‘ + frm.place.value;
    }
    </script>

    【HTML】

    <form method=”get” action=”<?php bloginfo(‘url’); ?>/”>
    <input type=”text” name=”keyword” onchange=”schange(this);” />
    <input type=”text” name=”place” onchange=”schange(this);”/>
    <input type=”hidden” name=”s”/>
    <input type=”submit” value=”検索”>
    </form>

    目的は果たせましたので、本件解決済みとさせていただきます。

    > jim912 様 改めましてアドバイスをいただきまして、誠にありがとうございました。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック「サイト内検索で、"Indeed”のような2つのキーワード入力欄から検索させ」には新たに返信することはできません。