すいません。
参考にしたサイトなどを記載していませんでした。
以下のサイトのコードで、
検索範囲を拡大しました。
[WordPress] ユーザー名とか、タグ名・カテゴリ名も検索対象に
上記のサイトのコードで、検索対象は拡大したのですが、
この検索対象を、ユーザーが選べるように、
チェックボックスを作りたいのですが、
その方法がわからないです。
可能ではありますが、ノンプログラマーさんだとけっこう骨が折れるかもしれないです。
一応参考サイトを貼っておきます。
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準拠です。(※こちらの会社のまわしものではありませんが^^;)
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つを組み合わせることで、希望のものが出来るのではないか、
と考えられました。
(希望のものとは、タグや投稿内容などでチェックボックスをつけたものだけが
検索範囲として指定される、というものです)
ただ、具体的にどのように組み合わせて、
どのようにフォームに記載すべきかも理解できていないので、
そのあたり、もう少しヒントをいただけますと嬉しいです。
もちろん、他の組み合わせや、全く違う方法などもあると
思いますので、もしわかるようでしたら、
なにか教えていただけますと嬉しいです。
ご返信が遅くなってしまいまして、申し訳ありませんが、
お時間があるようでしたら、お願い致します。