サポート » 使い方全般 » 検索機能の検索範囲を自分で選択できるようにしたい

  • またお世話になります。

    ワードプレスを使っていると、
    検索機能を入れられるコードがあることがあることが分かりました。

    ただ、この検索機能はあくまでも検索をすることが出来るだけ、
    ということも分かりました。

    そこで質問なのですが、
    検索範囲を自分で指定することって出来るのでしょうか?

    例えばですが、
    ・記事の内容
    ・タグ
    ・投稿者
    のそれぞれにチェックボックスがあり、
    このチェックボックスにチェックしたものが投稿範囲として指定される
    といったようなことは出来るのでしょうか。

    ノンプログラマーなので、大変知識が乏しい部分があるのですが、
    このようなことが、出来ればコードの記述などで表現できると
    嬉しいと考えています。

    ネットで調べてみても、このようなコードを見つけることが
    出来なかったのですが、
    前回もこのフォーラムでお世話になったので、
    もう一度お世話になろうと思い、質問しました。

    上手な返答が出来ないかもしれないですが、
    よろしければご回答していただけますと大変うれしいです。
    ご迷惑でお時間を頂戴することになりますが、
    よろしくお願い致します。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック投稿者 konbushi

    (@konbushi)

    すいません。
    参考にしたサイトなどを記載していませんでした。

    以下のサイトのコードで、
    検索範囲を拡大しました。

    [WordPress] ユーザー名とか、タグ名・カテゴリ名も検索対象に

    上記のサイトのコードで、検索対象は拡大したのですが、
    この検索対象を、ユーザーが選べるように、
    チェックボックスを作りたいのですが、
    その方法がわからないです。

    モデレーター のむらけい (Kei Nomura)

    (@mypacecreator)

    可能ではありますが、ノンプログラマーさんだとけっこう骨が折れるかもしれないです。
    一応参考サイトを貼っておきます。
    http://mypacecreator.net/blog/archives/1807
    http://www.webopixel.net/wordpress/584.html
    http://web-taiyo.com/works/120528.html

    一番上は私の書いたものですが、各条件を1つずつ選択するという仕様ならわりとすんなり行くと思います。
    chackboxを使って複数のカテゴリーや条件で絞り込むとなると2,3つ目の記事を参考にしてください。

    あと有償プラグインもあります↓。
    http://www.firstelement.jp/fe-advanced-search/
    実際に購入して使ってみましたがかなり高機能で、開発元会社の方の対応も親切でした。
    ライセンス的にもGPL準拠です。(※こちらの会社のまわしものではありませんが^^;)

    トピック投稿者 konbushi

    (@konbushi)

    mypacecreatorさん
    ご返信ありがとうございます!

    まず、有償プラグインですが、
    どうしてもその金額が捻出出来ないので、
    自作という形をとりたいと思います。
    情報提供ありがとうございます。

    また、mypacecreatorさんが教えて下さった情報を
    見てみたところ、
    http://web-taiyo.com/works/120528.htmlのサイトにありました、
    以下のコードと、

    カテゴリーの選択、value はカテゴリーID
    <input type="checkbox" name="cat[]" value="1" />aaa
    <input type="checkbox" name="cat[]" value="2" />bbb
    キーワードの選択、value はカスタムフィールドの値とマッチするように
    <input type="checkbox" name="s[]" value="kitaku" />北区
    <input type="checkbox" name="s[]" value="minamiku" />南区

    私が途中で提示した
    [WordPress] ユーザー名とか、タグ名・カテゴリ名も検索対象に
    に記載されていました以下のコード

    <?php
    function custom_search($search, $wp_query) {
    	global $wpdb;
    
    	//サーチページ以外だったら終了
    	if (!$wp_query->is_search)
    		return $search;
    	if (!isset($wp_query->query_vars))
    		return $search;
    
    	// ユーザー名とか、タグ名・カテゴリ名も検索対象に
    	$search_words = explode(' ', isset($wp_query->query_vars['s']) ? $wp_query->query_vars['s'] : '');
    	if ( count($search_words) > 0 ) {
    		$search = '';
    		foreach ( $search_words as $word ) {
    			if ( !empty($word) ) {
    				$search_word = $wpdb->escape("%{$word}%");
    				$search .= " AND (
     {$wpdb->posts}.post_title LIKE '{$search_word}'
     OR {$wpdb->posts}.post_content LIKE '{$search_word}'
     OR {$wpdb->posts}.post_author IN (SELECT distinct ID FROM {$wpdb->users} WHERE display_name LIKE '{$search_word}')
     OR {$wpdb->posts}.ID IN (
     SELECT distinct r.object_id
     FROM {$wpdb->term_relationships} AS r
     INNER JOIN {$wpdb->term_taxonomy} AS tt ON r.term_taxonomy_id = tt.term_taxonomy_id
     INNER JOIN {$wpdb->terms} AS t ON tt.term_id = t.term_id
     WHERE t.name LIKE '{$search_word}' OR t.slug LIKE '{$search_word}' OR tt.description LIKE '{$search_word}')
    ) ";
    			}
    		}
    	}
    
    	return $search;
    }
    add_filter('posts_search','custom_search', 10, 2);

    の2つを組み合わせることで、希望のものが出来るのではないか、
    と考えられました。

    (希望のものとは、タグや投稿内容などでチェックボックスをつけたものだけが
     検索範囲として指定される、というものです)

    ただ、具体的にどのように組み合わせて、
    どのようにフォームに記載すべきかも理解できていないので、
    そのあたり、もう少しヒントをいただけますと嬉しいです。

    もちろん、他の組み合わせや、全く違う方法などもあると
    思いますので、もしわかるようでしたら、
    なにか教えていただけますと嬉しいです。

    ご返信が遅くなってしまいまして、申し訳ありませんが、
    お時間があるようでしたら、お願い致します。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック「検索機能の検索範囲を自分で選択できるようにしたい」には新たに返信することはできません。