phpの文字列として取り出す get_search_query() というのがありますので、それで取得しておいて、phpの文字列関数あたりで適当に加工するのが近道かなと思います。
http://codex.wordpress.org/Function_Reference/get_search_query
V.J.Catkickさん
ありがとうございます。explodeを使って出来たのですが、検索条件が2つ以上になると
最初の1つめしか表示されません。もう少しでした。
そもそも「○○、”××”を含む」を生成している場所がわかればそこで
「○○」や「を含む」を削除したらよいと思うのですが、これはどこで
作られているのでしょうか?
他に方法はありますでしょうか?よろしくお願いします。
検索結果の文字列は、WP-query()の中にコードされているようなので、ここをいじるのはリスクが大きいと思われます。preg_match()系の関数(例えば「mb_ereg_replace()」)で正規表現を使えば、「、」までと「を含む」という文字を取り除けると思います(日本語版を使ってないので、正確にどの文字と言い切れませんが)。
それと、コアコード(つまりWordPressをインストールする時にコピーするオリジナルソース)に手を入れるのは非常に危険でお勧め出来ません。不用意なバージョンアップで簡単にコードが失われ、かつ、正常に表示出来なくなる可能性もあります。ご注意ください。
the_search_query(); は、××の部分の検索条件しか返さないはずなので、
検索結果のテンプレートのthe_search_query();記述部分の前後になにか
ついていませんか?
V.J.Catkickさん
ありがとうございます。コアコードに手を入れるのはやめたほうがいいのですね。
了解です!
preg_match()系の関数、難しそうですがやってみます。
pfcjpさん
ありがとうございます。
<?php the_search_query(); ?>
だけで、
例)「開催年 “2011年” を含む と 開催月 “6月” を含む」
と出てしまいます。(条件2つの場合。条件数分全てにくっついてきます)
簡単そうなのにこんなに難しいなんて・・・。
でも皆様相談に乗っていただいて嬉しいです。
頑張ってみます!
できました!皆様ありがとうございます!
get_search_query() とstr_replaceで出来ました。
“2011年”の「”」がとれないですが、まずはよしとします。
さてもう一つ問題が。
今までのは全ての検索結果がまとめて表示されていましたが、
検索項目「開始日」「終了日」があるとして
各項目の検索結果を個別に取り出すことはできますか?
よろしくお願いします。
検索項目「開始日」「終了日」があるとして
各項目の検索結果を個別に取り出すことはできますか?
ここがちょっと意味が分からないのですが、get_search_query()で表示しているところから推測すると、フォーム経由で
$search = new WP_Query($search_query);
こんな感じで持ってきて表示しているのかと思います。もしそうなら、検索結果は通常のページ表示と同じようにループで表示していると思います。その場合、クエリは1つですのでループ内で条件判断して必要な項目ごと(例えば開始日)に分ける…というのが一般的かと思われます。
もう少しスマートにやるのであれば、クエリを2つ持って(フォームの段階からフローが変わってしまうのでかなり大がかりな修正になりそう)バラバラにまわす…とか。
前者の方が楽かな、と思いますが、条件によりますね。
V.J.Catkickさん
ありがとうございます。すみません、説明不足でした。
「custom fields search」というプラグインを入れていて、
検索条件を複数設定しています。
検索結果への検索条件を
<?php the_search_query(); ?>
で表示させています。複数条件を設定しますと
“2011年””5月”と繋がって表示されているというわけです。
これを
年:2011年
月:5月
というふうに別々にできないかなということです。
わかりにくくて申し訳ございません。
お答えいただけたら助かります。