当使用WooCommerce插件的折扣规则时,产品get_sale_price始终为0



这是我的WordPress配置(刚刚升级了所有内容,所以所有内容都是最新的(:
WordPress:5.4
WooCommerce:4.0.1
WooCommCommerce:1.9.7 的折扣规则

WooCommerce配置的折扣规则,每个数量块:
1-4:10%
5-24:20%
25-999999:30%

这在商店里运行得很好,商店甚至可以通过折扣正常获得订单。问题是,我想删除SALE!徽章,因为它是自动添加的1-4数量块,这意味着根据配置默认10%的站点折扣。

现在,这是我在主题函数中的代码。php

function wc_custom_replace_sale_text($html, $post, $product) {
if ($product->is_on_sale()) {
$regular_price = $product->get_regular_price();
$sale_price = $product->get_sale_price();
return '<span class="onsale force-display">' . $sale_price . '</span>';
}
}
add_filter( 'woocommerce_sale_flash', 'wc_custom_replace_sale_text', 10, 3 );

问题:无论我尝试什么,我总是得到$product->get_sale_price()结果总是0。奇怪的是,$product_is_on_sale()的结果是true

正因为如此,我无法找到产品折扣,因此无法删除1-4数量块的SALE标签。

由于规则是在运行时应用的,因此需要使用过滤器

$discounted_price = apply_filters('advanced_woo_discount_rules_get_product_discount_price_from_custom_price', false, $product, 1, 0, 'all', true);
$wooco_discounted_price = $product->get_sale_price();
if ($discounted_price !== false) {
if ($discounted_price['discounted_price']  > 0) { 
// woo discount rule
} elseif ($wooco_discounted_price > 0) {
// woocommerce discount
}
}

来源:

  • https://wordpress.org/support/topic/advanced_woo_discount_rules_get_product_discount_price_from_custom_price/
  • https://wordpress.org/support/topic/there-is-no-get_sale_price/#post-13850829

最新更新