岡山・広島の広告パートナー ヤマト広告ブログリレー

岡山・広島エリアで広告の制作・コンサルティングを提供するヤマト広告のブログリレー。

ヤマト広告ブログリレー
岡山・広島を中心に活動する広告制作・広告パートナー。
デザインやホームページ制作、折込チラシやテレビCMなど販促物や媒体出稿、
リスティング広告などSEMやSEOなどWebマーケティング全般。

プラグインを使わない絞り込み機能【未選択時はすべて表示したい】

f:id:yamato-ugaki:20171024211415j:plain

Wordpressの検索機能について。
最近作ったものをテストで動かしながら思ったのが。

チェックボックスに1つもチェックをいれなかったら
絞り込まずに全部表示されるはず。

ユーザー心理として当たり前だと思っていたことが
システムではそう簡単にはいきません。

システムとしてはあくまでも「絞り込み/検索」であって
ユーザーが入力した条件にあったものを表示するというもの。

何にも入力しなければ何にも一致しないので
表示するものは何もありません
よ、という当たり前の結果が返ってきます。

それを
絞り込みの入力がなければ
その項目はすべて表示する

という扱いにするまでの過程です。


f:id:yamato-ugaki:20171024210256j:plain
いたって普通の使い方です。



しかしながら、一つでも指定しない項目があると
システム上ではこうなっています。
f:id:yamato-ugaki:20171024210301j:plain
つまりは何も該当せず、何も表示されない…。



開発側ではなく素直な気持ちで検索ボックスと向き合ったとき、
何も入力しない理由は
「色にこだわりはない!とりあえず全部だしてくれ」だということです。

なので正解は、選択していないときは
全部該当!!
f:id:yamato-ugaki:20171024210304j:plain



絞り込みで空で送信された場合は、
検索結果画面で、すべての条件を自動で挿入する。
絞り込みがある場合はその絞り込みのまま動作させる、、ということですね。

結果的にこうなりました。

<?php
/*  検索引数の取得 */
$s = $_GET['s'];
$s_fruits = $_GET['s_fruits'];

/*  条件取得 */
if( !empty($s_fruits) ) { $fruit_selected = array('taxonomy'=>'fruits','terms'=>$s_fruits,'field'=>'slug','operator'=>'IN');};

query_posts( array(
	'paged' => $paged ,
	'posts_per_page' => 12,
	'post_type' =>'post',
	's' => $s,
	'tax_query' => array( 
		$fruit_selected,
		'relation' => 'AND'
		)
	)
);
?>


これが通常通り下記のように、
'tax_query'の中にタクソノミーを書いてしまっていると
ターム指定がないときに、
「条件に一致するものがありませんよ!そもそも条件がないから!」
となります。

<?
/* 間違い */
$s_fruits = $_GET['s_fruits'];
query_posts( array(
	'paged' => $paged ,
	'posts_per_page' => 12,
	'post_type' =>'post',
	's' => $s,
	'tax_query' => array( 
		array(
			'taxonomy'=>'fruits',
			'terms'=>$s_fruits,
			'field'=>'slug',
			'operator'=>'IN'
		),
		'relation' => 'AND'
		)
	)
);
?>


詳しくはワードプレス便利帳にて公開中です。

wp-notebook.com

よろしければご参考までに。
もっとスマートな、システムに負担をかけないコーディング方法があれば大歓迎です。

ページトップ