WooCommerce按范围过滤产品

时间:2015-11-14 23:39:02

标签: wordpress woocommerce

例如,我有两个变体,'from_year'和'until_year',如何在产品档案页面中按范围过滤产品。

如果要调用此网址,只会获得与变量相等的产品,但需要from_year >= 2005until_year <= 20015

  

mysite.com/?from_year=2005&until_year=2015&post_type=product

enter image description here

1 个答案:

答案 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%肯定这是正确的方法,但可能需要一些调整。