如何在特定分类类别内执行搜索

时间:2014-01-30 作者:user3252290

我的问题是:我有3个custom taxonomies, 比如说\'author\', \'title\'\'editor\', 每一个都适用于正规职位。比如说,我的post\\u 1在“author”字段中有“jorge borges”,post\\u 2有“ray bradbury”。

我正在尝试一个带有下拉菜单的搜索表单,其中包含三个分类法和一个文本字段,因此,如果我选择“author”并搜索“jorgeBorges”,结果将是post\\u 1。

其他两种分类法也应该这样工作。

我找不到任何类似的问题,因为许多问题都涉及到创建一个包含所有分类实例的下拉菜单,这不是我想要的。我想要一个带有分类类别的下拉菜单,而不是值。

那么我该怎么做呢?

3 个回复
最合适的回答,由SO网友:Paulius Jakštas 整理而成

尝试以下操作:将此代码放入搜索表单中:

<form method="get" id="searchform" action="<?php bloginfo(\'url\'); ?>/search">
<?php 
$args = array(
   \'public\'   => true,
   \'_builtin\' => false
); 
$output = \'objects\';
$operator = \'and\'; 
$taxonomies = get_taxonomies( $args, $output, $operator ); 
$my_tax_array = array(\'your_taxonomy_name1\',\'your_taxonomy_name2\',); //make array of your taxonomies
echo "<select id=\'my_select_taxonomy\' name=\'my_select_taxonomy\'>";
echo "<option value=\'0\'>----</option>";
if ( $taxonomies ) {
  foreach ( $taxonomies  as $taxonomy ) {
    if (in_array($taxonomy->name, $my_tax_array)){
        echo "<option value=\'{$taxonomy->name}\'>{$taxonomy->label}</option>";
    }
  }
}
echo "</select><br />";
?>
<input type="text" value="" name="search_field" id="search_field" />
<input type="submit" id="searchsubmit" value="Search" /> 

在您的搜索页面中:

<?php

$search_field = $_GET[\'search_field\'];
$my_select_taxonomy = $_GET[\'my_select_taxonomy\'];

$args = array(
\'post_type\' => \'post\',
\'tax_query\' => array(
    array(
        \'taxonomy\' => $my_select_taxonomy,
        \'field\' => \'slug\',
        \'terms\' => $search_field,
    )
)
);
$query = new WP_Query( $args );

?>

SO网友:desisn
SO网友:user3252290

它不起作用了。。。搜索结果仍然没有在分类术语中查找,而是在帖子内容中查找。我想我把第二部分插错地方了。

这就是我的搜索方式。php看起来像:

<?php

if( !defined( \'ABSPATH\' ) ) {
exit;
}


$search_field = $_GET[\'search_field\'];
$my_select_taxonomy = $_GET[\'my_select_taxonomy\'];

$args = array(
\'post_type\' => \'post\',
\'tax_query\' => array(
array(
    \'taxonomy\' => $my_select_taxonomy,
    \'field\' => \'slug\',
    \'terms\' => $search_field,
)
)
);
$query = new WP_Query( $args );

get_header(); 
?>
<div id="content-search" class="<?php echo implode( \' \', responsive_get_content_classes()); ?>" >

//content..

</div>
您可以在此处自行测试:
test page
而作者的分类值为“gio ponti”或“aavv”

我使用的是一个儿童主题的回应主题,这可能会有所帮助。

结束

相关推荐

如何正确转义要在WP_QUERY中使用的查询变量

我有通过以下方式添加的自定义查询变量query_vars. 例如,“工业”。在里面pre_get_posts 操作I如果“industry”参数有值,则构造并添加分类查询,如下所示:add_action( \'pre_get_posts\', \'alter_posts\'); function alter_posts( $q ) { $tax_query = array(); // industry taxonomy if ( get_q