使用 Get 请求获取 Woocommerce 产品类别档案的促销产品

Get on sale products for Woocommerce product category archives using a Get request

我希望能够只显示我网站上所有类别的促销产品。我看到你可以使用 Woocommerce shortcodes.

但是我的 Wordpress 主题是动态的(它适用于所有产品类别),我无法真正为每个产品类别使用短代码创建一个页面(某些类别是在我添加时创建 "on the go"新产品)。

有什么方法可以简单地使用查询字符串 return 仅包含促销产品的类别?

例如:https://www.website.com/clothing/dresses?on_sale=true

---编辑:---

我没有使用短代码,只是想要一个查询参数的简单解决方案。

忘了说,在我的案例中,无论是否打折,我总是在“_regular_price”和“_sale_price”上有值。以下是示例:

产品特价中(价格不同):

产品促销(价格相同):

您需要通过 pre_get_posts 过滤器更改主查询。

add_action( 'pre_get_posts', 'modify_query_show_on_sale_products' );

function modify_query_show_on_sale_products( $query ) {

    if( ! is_admin() && $query->is_main_query() && $query->query_vars['wc_query'] == 'product_query' ) {

        $query->set('meta_key', '_sale_price');
        $query->set('meta_value', '0');
        $query->set('meta_compare', '>=');
    }

}