通过过滤器自定义字段和分类法搜索Woocommerce

时间:2018-07-02 06:05:36

标签: wordpress search filter woocommerce custom-taxonomy

我创建一个分类法和自定义字段搜索过滤器。

<form role="search" action="<?php echo site_url('/'); ?>" method="get">
<input type="hidden" name="s"  />

        <select name="search-yearof" id="srch-yearof">
            <option value="">From</option>
            <?php for ($i=1970;$i<=2017;$i++): ?>
            <option <?php if (isset($_GET['search-yearof']) and $_GET['search-yearof'] == "$i" ){ echo "selected"; } ?>  value="<?php echo $i; ?>"><?php echo $i; ?></option>
            <?php endfor; ?>
        </select>

        <select name="search-yearto" id="srch-yearto">
            <option value="">TO</option>
            <?php for ($i=1970;$i<=2017;$i++): ?>
            <option <?php if (isset($_GET['search-yearto']) and $_GET['search-yearto'] == "$i" ){ echo "selected"; } ?>  value="<?php echo $i; ?>"><?php echo $i; ?></option>
            <?php endfor; ?>
        </select>
 </form>

在Functions.php中

if(isset($_GET['s'])) {
function advanced_search_query($query){
        $meta_query = array();
        if( !empty( $_GET['search-yearof'] ) ) {
            $meta_query[] = array(

                'value'=>$_GET['search-yearof'],
                'orderby'   => 'meta_value_num',
                'type'     => 'NUMERIC',
                'key'=>'Year',
                'compare'=>'>='
            );
        }
        if( !empty( $_GET['search-yearto'] ) ) {
            $meta_query[] = array(

                'value'=>$_GET['search-yearto'],
                'orderby'   => 'meta_value_num',
                'type'     => 'NUMERIC',
                'key'=>'Year',
                'compare'=>'<='
            );
        }
        $query->set('meta_query',$meta_query);
}
add_action('pre_get_posts', 'advanced_search_query', 1000);
}

在此搜索中,我希望过滤1970年至2017年之间的电影。

它有效,但是在结果页面中,页眉和分页未显示。在搜索查询的开头,它添加了 s= ,当我删除它时,标题和分页又回来了,但结果显示为404。

我使用Wo0commerce 3.4.3。

0 个答案:

没有答案