例如,我有两个变体,'from_year'和'until_year',如何在产品档案页面中按范围过滤产品。
如果要调用此网址,只会获得与变量相等的产品,但需要from_year >= 2005
和until_year <= 20015
mysite.com/?from_year=2005&until_year=2015&post_type=product
答案 0 :(得分:0)
您需要日期查询。这是date queries上的一个很好的教程,date parameters WP_Query
上的Codex就是// Add query vars for filtering by years
function so_33714675_add_vars($query_vars) {
$query_vars[] = 'from_year';
$query_vars[] = 'until_year';
return $query_vars;
}
add_filter( 'query_vars', 'so_33714675_add_vars' );
// Filter product arvhice if query vars are present
function so_33714675_pre_get_posts($query) {
if ( !is_admin() && is_shop() && $query->is_main_query() ) {
$from_year = get_query_var('from_year');
$until_year = get_query_var('until_year');
$date_query = array();
if( ! empty( $from_year ) ){
$date_query['after'] = array(
'year' => $from_year,
);
}
if( ! empty( $until_year ) ){
$date_query['before'] = array(
'year' => $until_year,
);
}
// order by date
if( ! empty( $date_query ) ){
set_query_var( 'orderby', 'date' );
set_query_var( 'order', 'ASC' );
$date_query['inclusive'] = true;
set_query_var( 'date_query', array( $date_query ) );
}
}
}
add_action( 'pre_get_posts', 'so_33714675_pre_get_posts' );
。
您还需要过滤query_vars
以添加新的查询变量,并pre_get_posts
来修改根据您的新查询变量检索的帖子。
使用所有参考资料,我在这里尝试如何做到这一点。
{{1}}
请注意,这尚未经过全面测试。我99%肯定这是正确的方法,但可能需要一些调整。