我想找出一个直接链接来显示商店中的所有促销商品。 URL 通常可以过滤掉特定的属性和查询,所以我希望这是可能的。到目前为止,运气不佳。
我的结果是:未找到任何产品。但确实有产品在售。
我尝试了以下方法:
add_filter( 'woocommerce_product_query_meta_query', 'filter_on_sale_products', 20, 1 );
function filter_on_sale_products( $meta_query ){
if( isset($_GET['onsale']) && $_GET['onsale'] ){
$meta_query[] = array(
'key' => '_sale_price',
'value' => 0,
'compare' => '>'
);
}
return $meta_query;
}
这应该通过 URL 返回所有销售商品:https://www.example.com/shop/?onsale=1
任何建议将不胜感激
答案 0 :(得分:2)
您的代码包含一些非常小的错误。
这应该足够了:
function filter_woocommerce_product_query_meta_query( $meta_query, $query ) {
// Only on archive pages
if ( is_admin() || ! is_shop() )
return $meta_query; // exit
// Isset & NOT empty
if ( isset( $_GET['onsale'] ) && ! empty( $_GET['onsale'] ) ) {
$meta_query[] = array(
'key' => '_sale_price',
'value' => 0,
'compare' => '>',
);
}
return $meta_query;
}
add_filter( 'woocommerce_product_query_meta_query', 'filter_woocommerce_product_query_meta_query', 10, 2 );