【问题标题】:Woocommerce price after discount折扣后的 Woocommerce 价格
【发布时间】:2023-03-31 03:18:02
【问题描述】:

我不是 WooCommerce 方面的专家,我找不到如何显示根据优惠券折扣计算的价格。

此代码,优惠券后显示价格,还显示运费 - 我不想要什么,我想显示折扣后,运费和税前的价格:

$woocommerce->cart->get_cart_total();

此代码显示不含折扣且不含运费的最终价格:

$woocommerce->cart->get_cart_subtotal();

所以我尝试了类似的方法来获得折扣后的价格:

<?php
 $totalp = $woocommerce->cart->get_cart_subtotal();
 $totaldisc = $woocommerce->cart->get_total_discount();
 $resultp = $totalp - $totaldisc; 

 echo ($resultp);
?>

但它显示“0”数字。

所以,我想我想要的有一个简单的功能(我想在折扣后、发货前获得购物车总价),但我找不到这个功能。

【问题讨论】:

  • $totalp 和 $totaldisc 包含什么?
  • @ChenAsraf copoun 折扣价。示例:我设置了给购物车 30 折扣的优惠券,它显示 30 号。户田:)
  • 我猜它给出“0”,因为它包含货币符号,没有它不知道如何计算。但正如我所问的,我想有一个功能可以在发货前获得折扣后的总价
  • 我明白了。一会儿我会发布答案。

标签: php wordpress woocommerce


【解决方案1】:

回答:我需要使用不带符号的整数或浮点数,最好的方法是在这里查看 WooCommerce 文档: Woo - Docs ,并搜索此变量并在没有 () 的情况下使用它(不是函数)。现在它工作了:)

<?php

$first_number = $woocommerce->cart->subtotal;
$second_number = $woocommerce->cart->discount_total;
$sum_total = $first_number - $second_number;

print ($sum_total);

?>

【讨论】:

【解决方案2】:

由于价格中包含货币,因此您需要将其删除。

我找不到 WooCommerce 代码来获取没有货币符号的小计和折扣,所以让我们手动删除它们:

function remove_currency($price) {
    return (double) preg_replace('/[^0-9\.]+/', '', $price);
}

$totalp = remove_currency($woocommerce->cart->get_cart_subtotal());
$totaldisc = remove_currency($woocommerce->cart->get_total_discount());
$resultp = $totalp - $totaldisc; 

echo $resultp;

【讨论】:

  • 请附上价格和折扣,从我测试的数字来看是可以的。
  • 如果我单独回应价格和折扣,它会显示价格(假设购物车上的一件产品价格为 180 新谢克尔,折扣 30 新谢克尔)但通过计算,它应该显示150,但它显示了这个奇怪的数字。
  • 我明白了......所以我猜这个 WooCommerce 问题与这种计算方法有关。
  • 现在我知道“get_order_discount_total()”将给出不带货币符号的数字。我试着应用它
【解决方案3】:

这篇文章有点老了,但我想通知任何查看 Woocommerce 3.x 现在使用的人:

WC()->cart 

或者你可以只使用

$cart

只要你有 name_of_my_function( $cart ){} 参数可调用。

上面的一切都很好......我确定但希望有人不知道$woocommerce global 不再使用。

还有一种方法可以通过购物车项目(对象)循环 foreach 以使用 cart_object 选择您的价格小计。

foreach( $cart_obj->get_cart() as $key=>$value ) 
{
    $priced    = $value['subtotal'];
    $new_price = $priced - ($predefined_referral_discount * 1);

    $value['data']->set_price( $new_price );    
}

记住:name_of_my_function( $cart_obj ){} 这个。 快乐编码

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-06
    • 2020-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多