我创建一个分类法和自定义字段搜索过滤器。
<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。