[wordpress]特定のカテゴリー内でサイト内検索できるフォームを作る

wordpressで各カテゴリー一覧を作る時、
記事一覧と一緒にカテゴリー内で検索できたら使用度はともかく、
コンテンツとして栄えるんじゃねえの、みたいな感じで。

たとえば以下の条件で検索したとする。

  • 検索ワード:ああああ
  • カテゴリー:1

そうすると検索結果のurlはこんな感じになる。

http://ドメイン/?s=ああああ&cat=1

これを読み解くと

  • s:検索ワード
  • cat:カテゴリー

要するに
「name=”s”」「name=”cat”」のinputを作ってあげればいい。

<form>
	<input name="s" type="search" />
	<input name="cat" type="hidden" value="カテゴリーID" />
	<input type="submit" value="カテゴリー内検索" />
</form>

こうすれば強制的にカテゴリー要素との複合検索になる。
「カテゴリー名」をいちいち打ち込んでるとめんどいので、
category.phpとか特定のカテゴリー限定のページに突っ込む前提ならこうすると便利

<?php 
	//カテゴリーID抽出
	$category = get_the_category();
	$cat_id   = $category[0]->cat_ID;
?>

表示ページの該当カテゴリーを抽出して突っ込む。
上の例はIDだけど、スラッグでもいいんだっけな?

ついでなのでカテゴリーID、カテゴリー名、カテゴリースラッグ、カテゴリーURLを出すためのアレ。

<?php 
	//カテゴリーID、カテゴリー名、スラッグ抽出
	$category = get_the_category();
	$cat_id   = $category[0]->cat_ID;
	$cat_name = $category[0]->cat_name;
	$cat_slug = $category[0]->category_nicename;

	//url抽出
	$cat_all = get_terms( "category", "fields=all&get=all" );
	foreach($cat_all as $value);
?>

カテゴリーのリンクをつけたカテゴリー名を表示するならこう書く

<a href="<?php echo get_category_link($value->term_id); ?>"><?php echo $cat_name; ?></a>

タネが分かれば難しくない。
応用して、登録済みのカテゴリーの一覧を出しちゃってプルダウンなり何なりで選べるようにしちゃえば常設のページ内検索もなんか凄い感じになるんじゃないかね。
個人的にはそもそも使わんから利便性がどう変わるかよくわかんないけど。

コメント

タイトルとURLをコピーしました