我试图在特定的分类法中搜索帖子,但每次搜索时,我都会从所有其他页面获得结果,而不是Wordpress在分类法中选定的类别中进行搜索。
我将我的分类命名为:“publication\\u categories”。它包含我命名为“publication”的自定义帖子类型的所有类别。这是我用于自定义搜索的代码。php:
<form method="get" id="searchform" action="<?php bloginfo(\'url\'); ?>/">
<div class="alignleft">
<select name="taxonomy">
<option value="0">Select...</option>
<?php
$theterms = get_terms(\'publication_categories\', \'orderby=name\');
foreach ($theterms AS $term) :
echo "<option value=\'".$term->slug."\'".($_POST[\'publication_categories\'] == $term->slug ? \' selected="selected"\' : \'\').">".$term->name."</option>\\n";
endforeach;
?>
</select>
</div>
<input type="text" value="<?php the_search_query(); ?>" name="s" id="s" class="searchinput" />
<input type="submit" id="searchbutton" value="Search" class="btn" />
</form>
最合适的回答,由SO网友:Bainternet 整理而成
我发现您的代码有一些问题。
表单中缺少post\\U类型字段分类法下拉列表的名称应为自定义分类法的名称表单方法设置为“获取”,但您可以使用POST检查所选内容因此您的表单应该如下所示:
<form method="get" id="searchform" action="<?php bloginfo(\'url\'); ?>/">
<div class="alignleft">
<select name="publication_categories">
<option value="0">Select...</option>
<?php
$theterms = get_terms(\'publication_categories\', \'orderby=name\');
foreach ($theterms AS $term) :
echo "<option value=\'".$term->slug."\'".($_GET[\'publication_categories\'] == $term->slug ? \' selected="selected"\' : \'\').">".$term->name."</option>\\n";
endforeach;
?>
</select>
</div>
<input type="text" value="<?php the_search_query(); ?>" name="s" id="s" class="searchinput" />
<input type="hidden" name="post_type" value="publication" />
<input type="submit" id="searchbutton" value="Search" class="btn" />
</form>