我遇到了需要为其 WooCommerce 会员网站设置“最佳”定价设置的客户的一些问题。
如果产品正在销售,客户不希望应用会员折扣。但是,如果销售价格仍然比正常价格减去会员折扣更贵,那么客户希望客户得到那个价格。
场景一:
- 正常价格 = 10 美元
- 售价 = 8 美元
- 会员折扣的销售价格 = 4 美元(客户不想要这个)
- 会员价格 = 5 美元(这是更好的价格,所以客户应该得到这个价格,而不是销售价格)
场景二:
- 正常价格 = 10 美元
- 销售价格 = 4 美元(这是更好的价格,因此客户应该得到这个,并且不应对产品应用会员折扣)
- 折扣价 = 2 美元(客户不想要这个)
- 会员价格 = 5 美元
到目前为止,我正在使用以下过滤器:
add_filter( 'woocommerce_product_get_sale_price', 'qctj_get_member_price', 10, 2 );
add_filter( 'woocommerce_product_variation_get_sale_price','qctj_get_member_price', 10, 2 );
add_filter( 'woocommerce_product_get_price', 'qtjc_get_member_price', 10, 2 );
add_filter( 'woocommerce_product_variation_get_price', 'qctj_get_member_price', 10, 2 );
但是当我运行 $product->is_on_sale(); 检查我得到一个无限循环并且网站崩溃。
思考的过程是检查产品是否在打折,检查销售价格与正常价格减去会员折扣后的价格,然后确定哪个价格更好。如果销售价格更好,那么我将调用wc_memberships_exclude_product_from_member_discounts过滤器并将其覆盖为 true 以禁用销售价格的会员折扣。
显然它不起作用,因为 is_on_sale() 函数调用似乎创建了一个无限循环,否则我可能已经可以使用它了。
有人对此有一些建议吗?