WEBOPIXEL

WordPressのサイト内検索の検索条件をカスタマイズする

Posted: 2012.05.31 / Category: WordPress 

WordPress検索フォームを設置するだけで簡単にテキスト検索機能実装することができますが、カスタムフィールドやカスタム投稿タイプなど駆使したCMSっぽい使い方をする場合、テキスト検索だけでは物足りなかったりします。
そこでさまざまな条件を指定してサイト内検索する方法をご紹介します。

Sponsored Link
※WordPress3.3.2を使用しています。
2012.06.01 「投稿記事だけ検索したい」に抜けている部分があったので修正しました。

検索フォームの設置

一つのテキストフォームだけで検索する場合は以下のコードを表示させたい位置に配置するだけですね。

wp template

	<div id="search-box">
	<form method="get" action="<?php bloginfo( 'url' ); ?>">
		<input name="s" id="s" type="text" />
		<input id="submit" type="submit" value="検索" />
	</form>
	</div>
	

あとは「search.php」を作成して適当にループさせれば検索結果が表示されます。

投稿記事だけ検索したい

標準のサイト内検索は固定ページも検索範囲に含まれています。
投稿記事のみ検索したい場合は「functions.php」に下記のコードを追加してください。

functions.php

	function custom_search($search, $wp_query) {
		//サーチページ以外だったら終了
		if (!$wp_query->is_search) return;
		//投稿記事のみ検索
		$search .= " AND post_type = 'post'";
		return $search;
	}
	add_filter('posts_search','custom_search', 10, 2);
	

カスタム投稿タイプもこの「post_type」で判別しているので、カスタム投稿タイプ別に検索したい場合はこの部分を変更します。

検索関連のフックについて

MySQLを触ったことがある人ならお気づきでしょうが、「AND」といのはSQLのクエリです。
検索をカスタマイズするには「search.php」や固定ページでwp_queryを使用してカスタマイズする方法でもいけると思いますが、この記事ではすべて「functions.php」でSQLを直接変更する方法にします。

先ほどの「posts_search」はANDの部分のみを置き換えたり追加するフックです。
その他SQLのクエリに対応したフックは下記があります。

  • posts_groupby
  • posts_join
  • posts_orderby
  • posts_where
  • posts_request

大部分を変更したい場合は「posts_request」を使用すればすべてのクエリを置き換えることができます。

カテゴリー&タグで絞り込み検索したい

指定したカテゴリー&タグに所属している「●●」という文字を含む記事の検索をしたい場合はフォームを修正するだけで対応できます。
以下の過去記事を参考にしてください。

WordPressでカテゴリー&タグを絞り込み検索をする

カテゴリーだけ(検索文字なし)で検索したい

検索は基本的にテキストボックスに文字列を入力しないと「archive.php」などが表示されてしまいます。
せっかくなのでカテゴリーのチェックボックスだけでも「search.php」を表示して検索したいですね。
「functions.php」に下記のコードを追加してください。

functions.php

	function custom_search($search, $wp_query  ) {
		//query['s']があったら検索ページ表示
		if ( isset($wp_query->query['s']) ) $wp_query->is_search = true;
		return $search;
	}
	add_filter('posts_search','custom_search', 10, 2);
	

複数のカテゴリーで検索したい

先ほどのはセレクトボックスなので一つだけしかカテゴリーを選択できませんでしたが、複数のカテゴリーを選択できたら便利かもしれません。
フォーム部分は以下のようにすればチェックボックスになります。

	<form method="get" action="<?php bloginfo( 'url' ); ?>">
		<p>検索</p>
		<input name="s" id="s" type="text" />
		<div>
			<h4>カテゴリー</h4>
			<?php
			$cats = get_categories();
			foreach($cats as $cat) :
				echo '<label>'
				. '<input type="checkbox" value="' . $cat->cat_ID . '" name="cat[]" />'
				. esc_html($cat->cat_name) . '</label>';
			endforeach;
			?>
		</div>
		<input id="submit" type="submit" value="検索" />
	</form>
	

これだけだとエラーが表示されてうまくいきません。
なにやら配列で渡してるのがいけないようなので、文字列にする必要があります。

「functions.php」に「request」というフックで「implode」で配列を文字列に変換すれば正常に動作します。

functions.php

	function custom_request($query)
	{
		if (!empty($query['cat']) && array_key_exists('s', $query)){
        		$query['cat'] = implode(',', $query['cat']);
    		}
		return $query;
	}
	add_filter( 'request', 'custom_request' );
	

複数のカテゴリーで絞り込み検索したい

先ほどの複数カテゴリーの検索はどちらかのカテゴリーに所属していればヒットする「OR検索」というものでした。
今度は両方のカテゴリーに所属している記事のみヒットするようにしてみましょう。

functions.php

	function get_custom_field_posts_group($group) {
		if(isset($_REQUEST['cat'])) {
			global $wpdb;
			$group = $wpdb->prefix .'posts.ID HAVING count(*) >= '.count($_REQUEST['cat']);
			return $group;
		}
	}
	add_filter('posts_groupby', 'get_custom_field_posts_group');
	

日付で検索したい

新たに日付の入力フォームを用意します。
すごく簡略化しちゃってますが、実際はセレクトボックスとかjQueryUIとかで入力しやすくする必要があると思います。
とりあえずは「2012-05-01」みたいな感じで入力するとします。

	<div>
		<h4>日付</h4>
		<input name="date_start" type="text"/> ~
		<input name="date_end" type="text" />
	</div>
	

先ほどの「custom_search」に下記に変更します。

functions.php

	function custom_search($search, $wp_query) {
		//検索テキストが空でも検索ページを表示
		if ( isset($wp_query->query['s']) ) $wp_query->is_search = true;	
		//検索ページ以外だっ修了終了
		if (!$wp_query->is_search) return;
		//日付で検索
		if (!empty($_REQUEST['date_start']) && !empty($_REQUEST['date_end'])) {
			$start_date = "'" .date('Y-m-d',  strtotime($_REQUEST['date_start'])). "'";
			$end_date = "'" .date('Y-m-d',  strtotime($_REQUEST['date_end'])). "'";
			$search .= "AND DATE(post_date) BETWEEN {$start_date} AND {$end_date}";
		}
		return $search;
	}
	add_filter('posts_search','custom_search', 10, 2);
	

カスタムフィールドで検索したい

たとえばカスタムフィールドの名前を「custom1」とします。

検索フォームに以下を追加します。

	<div>
		<h4>カスタムフィールド</h4>
		<input name="meta_text" type="text" />
	</div>
	

「posts_join」にフックして「wp_postmeta」テーブルを結合します。

functions.php

	function custom_search_join($join){
		if(!empty($_REQUEST['meta_text'])) {
			$join .= "INNER JOIN wp_postmeta ON (wp_posts.ID = wp_postmeta.post_id)";
		}
		return $join;
	}
	add_filter( 'posts_join', 'custom_search_join' );
	

あとは先ほどの「custom_search」に以下を追加します。
入力したテキストと合致させたい場合は「=」ですが、「含む」の場合「LIKE」になります。

functions.php – custom_search

	//カスタムフィールドで検索
	if (!empty($_REQUEST['meta_text'])) {
		$meta_text = "'%" .mysql_real_escape_string($_REQUEST['meta_text']). "%'";
		$search .= "
			AND wp_postmeta.meta_key = 'custom1'
			AND wp_postmeta.meta_value LIKE {$meta_text}";
	}
	

カスタムフィールドの価格(数値)で検索

カスタムフィールドの検索ができればいろいろできますね。
例えば価格の検索をしてみます。

検索フォームに下記を追加します。
直接数値を入力させてもいいですが、セレクトメニューで選択するようにしてみました。

	<div>
		<h4>価格</h4>
		<select name="price">
			<option value="">選択してください。</option>
			<option value="1000">~1,000円</option>
			<option value="2000">1,000~2,000円</option>
			<option value="3000">2,000~3,000円</option>
		</select>
	</div>
	

「$_REQUEST[‘price’]」の場合でもカスタムフィールドと結合できるように変更します。

functions.php – custom_search_join

	function custom_search_join($join){
		if(!empty($_REQUEST['meta_text']) || !empty($_REQUEST['price'])) {
			$join .= "INNER JOIN wp_postmeta ON (wp_posts.ID = wp_postmeta.post_id)";
		}
		return $join;
	}
	add_filter( 'posts_join', 'custom_search_join' );
	

「custom_search」に下記を追加します。
今回は1,000円単位なので取得した値からマイナス1,000をして範囲を指定しています。

functions.php – custom_search

	if (!empty($_REQUEST['price'])) {
		$meta_price = intval($_REQUEST['price']);
		$mate_pricelow = $meta_price - 1000;
		$search .= "
			AND wp_postmeta.meta_key = 'price'
			AND wp_postmeta.meta_value BETWEEN {$mate_pricelow} AND {$meta_price}
		";
	}
	

ちょっとやり散らかした感がありますが、以上です。
実際使うにはもう少し条件分岐が必要だったり、問題があったりするかもしれませんが、とっかかりに程度にはなるのかなとか。

また、これを機にMySQLをはじめてみようかなと思った方は最近改訂版が出た「基礎からのMySQL」がおすすめです。


基礎からのMySQL 改訂版 (プログラマの種シリーズ SE必修! )

COMMENTS

fumi 2012-06-29 23:40 

はじめまして。
「WordPressのサイト内検索の検索条件をカスタマイズする」の記事を見てご連絡しました。

カテゴリーの絞り込み検索まではOKなのですが、それにカスタムフィールド何個かでさらに絞り込む方法がどうしてもわかりません。

ご教授いただけないでしょうか?
お忙しいところ恐れ入りますが宜しくお願いします。

WordPress関係の情報を探して、ちょくちょく拝見しています。
今後とも、有益な情報を配信してください。

webOpixel 2012-07-02 10:56 

「AND」検索にカスタムフィールドを追加してあとは「$group」に入力した数によって分岐という形になるかと思いますが、ちょっとややこしいかもしれませんね。

とはく 2012-09-10 13:22 

はじめまして
初のWPカスタマイズに挑戦している初心者です。
こちらの記事を拝見し、大変わかりやすく参考にさせていただいています。

現在wordpress3.4.2で、子ブログ2つ(A/B)あるマルチサイトで構築しています。
複数サイト共通のヘッダに、
1)カテゴリをチェックボックスで検索フォームを設置し
2)カテゴリのみのand検索で
3)子ブログAの記事の検索した結果をsearch.phpで表示
したいと考えています。

1)については、【複数のカテゴリーで検索したい】
を参考に、テンプレートに
——————————————

←子ブログAのID

——————————————
でくくって子ブログAのカテゴリをチェックボックスで表示できました。

しかし2)、3)については
【カテゴリーだけ(検索文字なし)で検索したい】
【複数のカテゴリーで絞り込み検索したい】
を参考に、functions.phpに
————————————–
function custom_search($search, $wp_query ) {
//query[‘s’]があったら検索ページ表示
if ( isset($wp_query->query[‘s’]) ) $wp_query->is_search = true;
return $search;
}
add_filter(‘posts_search’,’custom_search’, 10, 2);

function custom_request($query)
{
if (isset($query[‘cat’])) $query[‘cat’] = implode(‘,’, $query[‘cat’]);
return $query;
}
add_filter( ‘request’, ‘custom_request’ );
————————————–
と記入したのですが、and検索にならず※、表示もindex.phpになってしまいます。
※カテゴリを複数選択しても、いずれかひとつのカテゴリに属するものだけが表示される。

まったくの初心者だけに、どこから問題を解決すればよいのか途方にくれております。
できたらご教授いただけないでしょうか?
お忙しいところ恐れ入りますが、よろしくお願いいたします。

追記:【複数のカテゴリーで検索したい】のテンプレート記述ですが、
‘cat_ID . ‘” name=”cat[]”” />’
の部分は
‘cat_ID . ‘” name=”cat[]” />’
にしないとエラーしてしまいましたので、ご報告します。

webOpixel 2012-09-12 13:35 

マルチブログはやったことがなく、すぐにお答えするのが難しいです。
すみません。。。
もし何かわかりましたら追記したいと思います。

とはく 2012-09-12 18:56 

webOpixel様
お忙しいところもうしわけありません。

分不相応なことはあきらめて、マルチブログをやめました。
通常中のWPで
1)カテゴリをチェックボックスのみで検索フォームを設置し(キーワードはなし)
2)カテゴリのみのand検索で
3)検索した結果をsearch.phpで表示
したいと考えています。

【複数のカテゴリーで検索したい】
のフォームタグからキーワード用のtext枠を削除し、1)は実現できたのですが、
2)と3)がやはりうまく行きません。

functions.phpに
————————————–

/**
*カテゴリーだけ(検索文字なし)で検索したい
*/
function custom_search($search, $wp_query ) {
//query[‘s’]があったら検索ページ表示
if ( isset($wp_query->query[‘s’]) ) $wp_query->is_search = true;
return $search;
}
add_filter(‘posts_search’,’custom_search’, 10, 2);

/**
*複数のカテゴリーで検索したい
*/
function custom_request($query)
{
if (isset($query[‘cat’])) $query[‘cat’] = implode(‘,’, $query[‘cat’]);
return $query;
}
add_filter( ‘request’, ‘custom_request’ );

/**
*複数のカテゴリーで絞り込み検索したい
*/
function get_custom_field_posts_group($group) {
if(isset($_REQUEST[‘cat’])) {
global $wpdb;
$group = ‘wp_posts.ID HAVING count(*) >= ‘.count($_REQUEST[‘cat’]);
return $group;
}
}
add_filter(‘posts_groupby’, ‘get_custom_field_posts_group’);

————————————–
と3つ並べて記入したのですが
and検索にならず※、表示もsearch.php以外になってしまいます。
【複数のカテゴリーで絞り込み検索したい】の部分だけ、あるいは
【カテゴリーだけ(検索文字なし)で検索したい+複数のカテゴリーで絞り込み検索したい】
の2つの部分を記入しても、同じ結果です。

※カテゴリをひとつだけ選択しても複数選択しても、すべて
「見つかりません
リクエストされたアーカイブには何も見つかりませんでした。検索すれば関連投稿が見つかるかもしれません。」
と出る。

2と3を実現するにはどうすればよいか、相談に乗っていただけないでしょうか?

どうかよろしくお願いいたします。

webOpixel 2012-09-13 15:11 

「$group = ‘wp_posts.ID HAVING count(*) >= ‘.count($_REQUEST[‘cat’]);」
の部分ですが、「wp_posts」はデータベースのテーブル名でして環境によっては替えなくてはいけないかもしれません。
サンプルの方も修正しましたが「wp_」のところを「$wpdb->prefix.」と置き換えてください。
マルチブログの場合ブログの数だけテーブルが作成された気がしますので、その場合は直接テーブル名を指定した方が良いのかも知れません。

ただこれは「search.php」が表示されない原因ではない気がします。
一度使用しているプラグインをすべて外して、テンプレートもこれだけの状態にして確認してみてください。

「debug-bar」などを導入するとエラーを表示してくれる場合もあります。
http://wordpress.org/extend/plugins/debug-bar-console/

とはく 2012-09-13 17:35 

ありがとうございます!
おかげでアンド検索のほうはうまく行きました。
「search.php」が表示されない法は、もう一度WPを際インストールして確かめてみます。

また、参考になるプラグインについての情報もありがとうございました。
いろいろ試してみます。

とはく 2012-09-13 20:40 

何度もすみません。
プラグインは何もなしで、デフォルトの【Twenty Eleven】テンプレートで、上記のカテゴリのAND検索でテストしてみたのですが、やはりsearch.phpではなくカテゴリーテンプレート (category.php)で結果が表示されてしまいます。

debug-barも導入してみましたが、特にエラーは指摘されていないのではないかと思います。

なんとかsearch.phpで表示して、チェックした検索条件(複数のカテゴリ名)をページに表示させたいのですが…。

もしもなにか思い当たることがありましたら、ご助言いただけると嬉しいです。
お手を煩わせて申し訳ないのですが、お時間がありましたらよろしくお願いいたします。

webOpixel 2012-09-14 15:45 

んーなんでしょうね。
普通の文字列の検索ではsearch.phpが表示されてますか?

解決策ではないのですが
表示しているページに「print_r($wp_query);」を表示してみて、
「is_search」という項目が「1」となっているか確認してみてください。

もし「1」になっててもsearch.phpが表示されないようでしたら
「custom_search」の部分に
$wp_query->is_category = false;
を追加してみてください。

if ( isset($wp_query->query[‘s’]) ) {
$wp_query->is_search = true;
$wp_query->is_category = false;
}

とはく 2012-09-14 20:28 

なんどもありがとうございます。

【複数のカテゴリーで検索したい】
のフォームタグからキーワード用のtext枠を削除していたのが原因でした。
自己流ですが、textをhiddenにしてsearch.phpで結果表示させることができました。

本当に何もわかっていなくてお恥ずかしいです。

丁寧に回答してくださって、本当に助かりました。
ありがとうございました。

Inaba 2013-01-10 16:40 

はじめまして。
様々な条件での検索の方法をわかりやすく解説していただきありがとうございます。
それぞれを試しながら勉強させていただいておりますが、気になる点と質問がありコメントさせていただきます。

◎気になる点
【複数のカテゴリーで検索したい】の「「implode」で配列を文字列に変換」のコードをfunction.phpに記載した場合、管理画面の投稿ページ内の「投稿の検索」を使用した時や「メディア」ページに移る際に一瞬警告文が表示されます。
implode() [function.implode]: Invalid arguments passed in …
WordPressのバージョンは3.5です。

if (isset($query[‘cat’])) $query[‘cat’] = implode(‘,’, $query[‘cat’]);
現状、エラーの該当行である上記のimplodeの前に@を付けて対処しておりますが、もっと良い解消策がありますでしょうか?

◎ご質問
この記事で紹介されている複数条件の検索方法をひとつのページに複数設置するにはどうしたら良いのでしょうか?

具体的には、異なるチェックボックス群による「複数のカテゴリーで検索(OR検索)」を2つと「カスタムフィールドでの絞り込み検索」の2つのフォームを設置したいと考えています。

「複数のカテゴリーで絞り込み検索」を2つ設置は動いているのですが、絞り込み検索の設置に難儀しております。

長くなりましたが、お時間がありましたらご回答のほど、よろしくお願いいたします。

webOpixel 2013-01-12 10:21 

すみません。
管理画面のエラーのところは修正しましたが、以下に修正してください。

if (isset($query[‘cat’])) $query[‘cat’] = implode(‘,’, $query[‘cat’]);

if (!empty($query[‘cat’])) $query[‘cat’] = implode(‘,’, $query[‘cat’]);

質問の件ですが、ちょっと不具合があるかもしれませんが、「custom1」「price」を絞り込み検索する例です。
実際使用するには条件分岐をもう少し入れていく必要があります。
========================
$search .= "
AND wp_postmeta.meta_key = ‘custom1’
AND wp_postmeta.meta_value LIKE {$meta_text}
AND wp_posts.ID IN (
SELECT post_id
FROM wp_postmeta
WHERE meta_key = ‘price’
AND wp_postmeta.meta_value BETWEEN {$mate_pricelow} AND {$meta_price})
";

Inaba 2013-02-08 23:35 

お返事が遅くなりました。

エラー対処の件、お答えいただきありがとうございました。
おかげでスッキリしました。

また質問した複数の検索フォーム設置の件ですが私には理解できませんでした。せっかくコードをご掲載いただいたのに申し訳ありません。
こちらのサイトの他の記事等も参考に、もっと基礎的なところからじっくりと勉強させて頂きます。

イブキ 2013-05-31 19:19 

webOpixel様

はじめまして「複数のカテゴリーで検索したい」とても参考になり勉強になります。

質問なんですが、functions.phpにコードを追加するとチェックボックスによる複数検索が出来てかなり便利になるんですが、通常のサイドバーにあるようなカテゴリー一覧で、同カテゴリーを選択するとエラーになってしまいます。

チェックボックス以外の同カテゴリーにもcatではなくcat[]とすると表示はされるんですが、ディフォルトで用意してあるウィジェットのカテゴリーなどを使うときにコードに[]は追加できないため困っています。

紹介してあるコードがfunctions.phpに追加する方法ではなく検索結果の方か又はチェックボックスを使用しているページに追加できると大変便利なような気がするんですが・・・・

何かアドバイスがあればご教授下さい。

よろしくお願いいたします。

webOpixel 2013-06-03 11:57 

implodeする前のifに「array_key_exists(‘s’, $query)」で検索画面かを分岐させる必要があるみたいです。
コードの方は修正しましたのでご確認ください。

おっしゃってる通り、フックのでのカスタマイズの方法だと、他のページとの整合性がかなり大変なので、独立した形で実装した方がスマートかもしれませんね。
そのうち、この方法もご紹介したいと思います。

イブキ 2013-06-03 22:08 

webOpixel様

お答えいただき誠にありがとうございます。

出来ました!!凄いです!!
思ってた通りの動作になりました。
本当にありがとうございます。

今回使っているコードを理解してないまま使っているので、もっと勉強していこうと思ってます。

又検索結果はsearch.phpに表示してなくtaxonomy-タクソノミー名.phpで表示する形にしている為教えていただいた「array_key_exists(‘s’, $query)」の箇所を「array_key_exists(‘タクソノミー名’, $query)」にして使わせていただきました。

何度お礼言っていいか分かりませんが本当にありがとうございました。

独立した形で実装できるコードも楽しみにしています。

yosuke 2013-08-27 14:58 

記事、大変参考になりました。
日付で検索できるようになり、とても嬉しいです。

ところで、投稿者名で検索するにはどうすればよいでしょうか?
memo.dogmap.jpさんの「ユーザー名とか、タグ名・カテゴリ名も検索対象に」を試してみたのですが、ダメでした。
もしご存知であれば教えて下さい。

yosuke 2013-08-27 23:08 

あ、すいません。教えてもらってできました。
ちなみに OR user_nicename like ‘{$search_word}’ 
を追加記入するとできました。

お騒がせしてすみません。

webOpixel 2013-08-28 10:07 

お返事できなくてすみません。
解決できてよかったです。

BOCCIO 2013-09-09 16:52 

はじめまして。
この記事にすっごく助けてもらいました!!
締め切りがギリギリで神様のような記事で
何とか間に合うことができました。
ありがとうございます!!

おせっかいかもしれませんが、、、

_______________

複数のカテゴリーで検索したい

先ほどのはセレクトボックスなので一つだけしかカテゴリーを選択できませんでしたが、複数のカテゴリーを選択できたら便利かもしれません。
フォーム部分は以下のようにすればチェックボックスになります。

<form method="get" action="”>
検索

カテゴリー
<?php
$cats = get_categories();
foreach($cats as $cat) :
echo '’
. ‘cat_ID . ‘” name=”cat[]”” />’
. esc_html($cat->cat_name) . ”;
endforeach;
?>

_______________

上記の部分で
. ‘cat_ID . ‘” name=”cat[]”” />’
とありますが。
. ‘cat_ID . ‘” name=”cat[]” />’
の方がよりよいのではないでしょうか?

作業していて気になったので書き込んでみました。。。
生意気言ってごめんなさい。
webOpixelさんのページがもっと良くなるようにお手伝いできたらと思い書いてしまいました。ご覧になったら消して下さい。

これからもがんばってください!!

webOpixel 2013-09-10 14:42 

ご指摘ありがとうございます。
たしかに「"」が余分ですね。修正しておきました。
少しでもBOCCIOさんのお役にたてたようで良かったです。
応援ありがとうございます^^

Sasuke 2013-11-02 09:19 

記事参考にさせて頂きました。ありがとうございます!!
少し後の段階になってしまうのかもしれませんが、カテゴリーのチェックボックスでの複数検索を行い、検索結果にチェックした項目を再度チェック(引き継ぎ)させる事は可能なのでしょうか?
もし可能でしたら、教えていただけると大変助かります。。
宜しくお願い致します。

webOpixel 2013-11-08 14:52 

ざっくりですがこんな感じでどうでしょう。

$cats = get_categories();
foreach($cats as $cat) :
$out = '<label><input type="checkbox" value="' . $cat->cat_ID . '" name="cat[]"';
if(in_array($cat->cat_ID, $_GET['cat'])) $out .= 'checked="checked"';
$out .= ' />' . esc_html($cat->cat_name) . '</label>';
echo $out;
endforeach;

Sasuke 2013-11-11 11:14 

webOpixel様

返信遅くなり申し訳ございません。
希望の機能満たす事が出来ました!ありがとうございました!!

kyon 2014-06-09 05:29 

いつもwebOpixel様の記事を参考にさせて頂いております!ありがとうございます!
質問で申し訳ないのですが、カテゴリーを複数検索する方法はできたのですが、カテゴリー(複数)&タグ(複数)&テキストのアンド検索は実装可能でしょうか?

(これは単にget方式でパラメーターを複数渡せばいいだけの話になるのですかね;;)

もし、可能であれば、方法をご教授頂けますと幸いです!

追伸
いつも参考にさせて頂いて助けて頂いております!本当に神様のようなブログです!
ありがとうございます!

webOpixel 2014-06-12 14:12 

ブログ閲覧ありがとうございます。

こちらの記事を複数選択にするだけではだめだったんですかね。。
http://www.webopixel.net/wordpress/401.html

ちょっと検証ができないでの返信ですみません。

hana 2014-08-11 12:10 

はじめまして。この記事のお陰で条件検索が少しずつ形になってきました。
質問させて頂きたいのですが、複数のカスタムフィールドによる検索はどのようにすれば実現できますか?
カスタムフィールド1つだけでの検索なら行えるのですが…。
どうか、お力添えください。

function custom_search($search, $wp_query) {
if (!empty($_REQUEST[‘low’]) || !empty($_REQUEST[‘high’])) {
$meta_pricehigh = intval($_REQUEST[‘high’]);
$mate_pricelow = intval($_REQUEST[‘low’]);
$search .= ”
AND wp_postmeta.meta_key = ‘kakaku’
AND wp_postmeta.meta_value BETWEEN {$mate_pricelow} AND {$meta_pricehigh}
“;
}
if ( !empty($_REQUEST[‘color’])) {
$color= intval($_REQUEST[‘color’]);
$search .= ”
AND wp_postmeta.meta_key = ‘color’
AND wp_postmeta.meta_value ={$color}
“;
}
return $search;
}
add_filter(‘posts_search’,’custom_search’, 10, 2);

hana 2014-08-13 17:22 

どうしてもANDで繋げられなかったので、
今回はSQL文を使用するのを諦め、別の方法で作りたい物の実現にいたりました。
もうちょっとのはず!!と思っていたのですが…本でも買って勉強しないといけませんね。
お目汚し、失礼いたしました。

LEAVE A REPLY

コードを書く場合は<pre>で囲んでください。