WordPress的自定义类别搜索框

时间:2013-07-29 作者:RICKY DAWN

我见过一些插件,它们在标准WordPress搜索栏中添加了一个额外的类别下拉列表,但这对我一点帮助都没有。

我的网站有很多分类中的帖子,我想做的是在每个分类页面的顶部添加一个大型搜索框,标题为“搜索[猫名]:”,此搜索框将只搜索他们当前查看的分类中的帖子。

为了避免我不得不放置代码(并为我拥有的每个类别创建一个类别页面模板),如果能够以某种方式动态创建,那将是非常棒的。因此,我的目标是:

动态创建的搜索栏标题仅在用户当前查看的类别内搜索的搜索框,我有:

<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 个回复
最合适的回答,由SO网友:gmazzap 整理而成

在主题的每个模板文件中,甚至在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>

结束

相关推荐

Search Form Not Working

我使用的是基于2012主题的,我使用的是下面的脚本(是的,我知道包装器还不正确)。但是,它默认返回主页。有什么想法吗?<?php /** * The template for displaying Search Results pages. * */ get_header(); ?> <section id=\"primary\" class=\"site-content\"> <div id=\"conten