WooCommerce在购物车上展示折扣

时间:2019-09-01 作者:buğracan

嗨,伙计们,我想展示一下客户通过当前交易节省了多少钱。我输入了我店里所有产品的正常价格和销售价格,它显示了prdocut目录上的折扣百分比。Woocommerce购物车仅显示总计和小计。

小计:10美元总计:10美元$

所以我写了这个函数来显示我想要什么。虽然它可以在我的本地主机上运行,但我无法在实时主机上获得任何结果。

 function discount_module_in() {
    global $woocommerce;

    $items = $woocommerce->cart->get_cart();

        foreach($items as $item => $values) { 
            $price=get_post_meta($values[\'product_id\'] , \'_regular_price\', true);
            $sale=get_post_meta($values[\'product_id\'] , \'_sale_price\', true);
            $amount=$price-$sale;
            $discount=(1-$sale/$price)*100;
            if (intval($discount)==70) {
                $amount70+=$amount;
            } 
            if (intval($discount)==50) {
                $amount50+=$amount;
            }
            if (intval($discount)==30) {
                $amount30+=$amount;

            }

        }
        if ($amount70>0) {
            echo "70% OFF: -".$amount70.get_woocommerce_currency_symbol()."<br>";
        }
        if ($amount50>0) {
            echo "50% OFF: -".$amount50.get_woocommerce_currency_symbol()."<br>";
        }
        if ($amount30>0) {
            echo "30% OFF: -".$amount30.get_woocommerce_currency_symbol()."<br>";
        }


}   
add_action( \'woocommerce_after_cart_totals\', \'discount_module_in\');
我还检查了它的主题是否存在问题,但我只是将代码粘贴到函数中。php,以确保我尝试了简单的函数,并且它工作正常。这也不是woocommerce挂钩问题。

  function discount_module_in() {

        echo "test"
  }
  add_action( \'woocommerce_after_cart_totals\', \'discount_module_in\');
我也用这个来更改代码。它在本地主机上运行,但在实时主机上仍不工作。

function deneme(){

    global $woocommerce;


    $cart = WC()->cart->get_cart();

    foreach( $cart as $cart_item ){

    $product = wc_get_product( $cart_item[\'product_id\'] );


    $price=$product->get_regular_price();
    $sale=$product->get_sale_price();

    $amount=$price-$sale;
    $discount=(1-$sale/$price)*100;
        if (intval($discount)==70) {
            $amount70+=$amount;
        } 
        if (intval($discount)==50) {
                    $amount50+=$amount;
        }
        if (intval($discount)==30) {
        $amount30+=$amount;
        }

    }
        if ($amount70>0) {
            echo "70% OFF: -".$amount70.get_woocommerce_currency_symbol()."<br>";
        }
        if ($amount50>0) {
            echo "50% OFF: -".$amount50.get_woocommerce_currency_symbol()."<br>";
        }
        if ($amount30>0) {
            echo "30% OFF: -".$amount30.get_woocommerce_currency_symbol()."<br>";
        }    
}
add_action( \'woocommerce_proceed_to_checkout\', \'deneme\');
调试后,它给了我这个错误

警告:在/home/u693223509/domains/inuovo中遇到非数字值。com/public\\u html/wp-content/themes/inuovo/functions。php在线34

警告:在/home/u693223509/domains/inuovo中遇到非数字值。com/public\\u html/wp-content/themes/inuovo/functions。php在线34

警告:在/home/u693223509/domains/inuovo中遇到非数字值。com/public\\u html/wp-content/themes/inuovo/functions。php在线35

警告:在/home/u693223509/domains/inuovo中遇到非数字值。com/public\\u html/wp-content/themes/inuovo/functions。php在线35

警告:在/home/u693223509/domains/inuovo中被零除。com/public\\u html/wp-content/themes/inuovo/functions。php在线35

这是第34行和第35行

    $amount=$price-$sale;
    $discount=(1-$sale/$price)*100;

2 个回复
最合适的回答,由SO网友:buğracan 整理而成

这就是解决方案;抱歉耽搁了:)我希望这将有助于寻找相同问题的世卫组织;

    function deneme (){

    global $woocommerce;


    $cart = WC()->cart->get_cart();

    foreach( $cart as $cart_item ){

    $product = wc_get_product( $cart_item[\'product_id\'] );
    // Now you have access to (see above)...

    $sale     =  $product->get_variation_sale_price( \'min\', true );
    $price  =  $product->get_variation_regular_price( \'max\', true );
    $amount=$price-$sale;
    $total+=$price*$cart_item[\'quantity\'];
    $discount=(1-$sale/$price)*100;
        if (intval($discount)==70) {
            $amount70+=$amount*$cart_item[\'quantity\'];
        } 
        if (intval($discount)==50) {
            $amount50+=$amount*$cart_item[\'quantity\'];
        }
        if (intval($discount)==30) {
        $amount30+=$amount*$cart_item[\'quantity\'];
        }

    }
        echo "<span style=\'float:right\'>ORDER TOTAL: ".get_woocommerce_currency_symbol().$total."</span><br>";
        if ($amount70>0) {
            echo "<span style=\'float:right\'>70% OFF: -".get_woocommerce_currency_symbol().$amount70."</span><br>";
        }
        if ($amount50>0) {
            echo "<span style=\'float:right\'>50% OFF: -".get_woocommerce_currency_symbol().$amount50."</span><br>";
        }
        if ($amount30>0) {
            echo "<span style=\'float:right\'>30% OFF: -".get_woocommerce_currency_symbol().$amount30."</span><br>";
        }  
}

add_action( \'woocommerce_cart_totals_after_order_total\', \'deneme\');

SO网友:buğracan

我找到了解决方案,很抱歉,这是我的错,我的商店基于可变产品,在我调用了可变价格后,它奏效了!

相关推荐

初学者问题:通过管理Web界面访问Functions.php以导入自定义帖子类型?

是否可以访问这些功能。php文件仅仅使用管理web界面?我正在尝试访问以前创建的(手动编码的)自定义帖子类型,我不得不跳过很多障碍,因为我无法访问函数中的代码。php文件。我已经浏览了很多帮助页面,但建议的步骤似乎总是涉及到函数。php文件(我无法访问)或使用插件中的导入/导出工具,该插件首先创建了自定义帖子类型(据我所知,没有使用任何插件)。这似乎是一个非常基本的问题,但我一辈子都想不出来。任何帮助都将不胜感激!