使用HTML<SELECT>元素在WP搜索中筛选分类

时间:2021-02-22 作者:The Chewy

我有一个WP搜索表单,我想在其中添加<select> 特定分类法的元素以及自定义职位类型“职务”的术语(薪级)。

当前的标准输入搜索使用以下代码在作业自定义帖子类型中搜索关键字:

<form method="get" action="<?php echo esc_url(site_url(\'/\')); ?>">
    <div id="form-wrapper">
        <label id="searchlabel" for="s">Search</label>
        <input id="s" name="s" type="search">
        <input type="hidden" name="post_type" value="jobs" />
        <input class="td search-jobs-button" type="submit" value="Search Jobs">
    </div>
</form>
如何添加<select> 元素,该元素将显示薪资级别中的自定义薪资分类(例如:20-40k英镑、40-60k英镑、60-80k英镑等)。很明显,分类术语将添加到网站的后端。

我希望人们能够在搜索输入字段中搜索关键字,并使用选择选项按薪资级别有效过滤这些结果。

是否有任何方法可以将每个薪级添加到个人选择选项中,然后在单击提交输入按钮时将其包含在搜索中?

1 个回复
最合适的回答,由SO网友:Sally CJ 整理而成

如果您指的是单选下拉菜单,则可以添加<select> 元素使用wp_dropdown_categories().

下面是一个示例salary_bands 作为分类名称/slug,我将下拉列表放置在提交按钮的上方或之前,但您可以将其放置在表单中的其他位置:

<?php wp_dropdown_categories( array(
    \'taxonomy\'        => \'salary_bands\', // taxonomy slug
    \'name\'            => \'salary_bands\', // taxonomy slug or query_var
    \'value_field\'     => \'slug\',
    \'selected\'        => get_query_var( \'salary_bands\' ),
    \'hierarchical\'    => true, // place each term under their own parent
    \'show_option_all\' => \'All Salary Bands\',
) ); ?>
<input class="td search-jobs-button" type="submit" value="Search Jobs">
有关完整参数列表,请参见函数参考,但在上面,我设置了name 分类学鼻涕虫(salary_bands) value_fieldslug 因此<option> 值将使用术语slug(而不是默认值-术语ID)。

使用这些设置,我们不需要通过pre_get_posts 钩子(或另一个钩子),因为WordPress自然会在搜索查询(其SQL语句)中自动包含这些术语。

Notes:

<确保使用正确的分类slug,它是register_taxonomy() 如中所示register_taxonomy( \'salary_bands\', ... )
。否则,您可能会得到一个空的选择菜单!

如果使用自定义query_var value, 然后设置上述name 对的值query_var 价值然后使用get_query_var( \'query_var value\' ).

此外,您可能需要使用the_search_query() 像这样:

<input id="s" name="s" type="search" value="<?php the_search_query(); ?>">

相关推荐

在WordPress上使用ElasticSearch

我是个傻瓜,所以感谢你的耐心:-)我正在尝试使用ElasticSearch和使用ElasticPress插件的Wordpress安装。所有配置和生产中。到目前为止取得了惊人的成绩。我对所有ES的使用位置感到困惑。“默认情况下,它仅在搜索页上工作。如果要使用它处理任何其他页,或索引、循环、主页、存档、税务(WP\\U查询),则必须添加到查询中:”“ep\\U integrate”“=>true”有人能帮我用代码片段实现这个吗?谢谢