web-dev-qa-db-ja.com

WordPress用のカスタムカテゴリ検索ボックス

標準のWordPress検索バーにカテゴリのドロップダウンリストを追加するプラグインを見たことがありますが、これはまったく役に立ちません。

私のサイトはたくさんのカテゴリの中にたくさんの投稿を持っています、そして私がしたいのはそれぞれのカテゴリページの一番上に「search [cat name]:」という大きな検索ボックスを追加することです。彼らが現在見ているカテゴリ.

私がコードを配置する手間を省くには(そして私が持っている各カテゴリ用のカテゴリページテンプレートを作成するのが)、これがどういうわけか動的に作成できるのであれば素晴らしいでしょう。だから私が達成しようとしているのはこれです:

  1. 動的に作成された検索バーのタイトル
  2. ユーザーが現在表示しているカテゴリ内でのみ検索する検索ボックス

私はこれを持っています:

<form method="get" id="search form" action="/">
<div>
<input type="text" value="" name="s" id="s" />
<input type="hidden" value="22" name="cat" id="africa" />
<input type="submit" id="search_submit" name="Search" value="Search"/>
</div>
</form>

しかし、うまくいかないようで、カテゴリIDを動的に埋めているわけでもありません。つまり、カテゴリごとに新しいカテゴリテンプレートを作成する必要があります。

誰かがこれで私を助けることができればそれは非常に高く評価されるでしょう、ありがとう。

1
RICKY DAWN

あなたのテーマのすべてのテンプレートファイルで、header.phpでもあなたは置くことができます

<?php
$term = null;
$btn = __('Search');
if ( is_category() ) { $term = get_queried_object(); }
?>
<form method="get" id="search_form" action="<?php echo home_url(); ?>">
<div>
<input type="text" value="" name="s" id="s" />
<?php
if ($term) {
  $btn = sprintf( __('Search in %s'), $term->name);
?>
<input type="hidden" value="<?php echo $term->term_id; ?>" name="cat" />
<input type="hidden" value="<?php echo $term->name; ?>" name="catname" />
<?php } ?>
<input type="submit" id="search_submit" name="Search" value="<?php echo $btn; ?>"/>
</div>
</form>

カテゴリを表示している場合はカテゴリ限定の検索が表示され、それ以外の場合は汎用の検索フォームが表示されます。

それであなたのsearch.phpの中で、タイトルを動的に出力するために次のようなものを入れてください:

<?php
$searchtitle = isset($_GET['catname']) && ! empty($_GET['catname']) ? 
sprintf( __('Search Results for &quot;%s&quot; in category &quot;%s&quot;'), $_GET['s'], $_GET['catname']) :
sprintf( __('Search Results for &quot;%s&quot;'), $_GET['s']);
?>
<h1><?php echo $searchtitle; ?></h1>
3
gmazzap