drnbotxo449747 2017-11-01 21:48
浏览 112
已采纳

获取购物车总数,包括WooCommerce中最后添加的商品

In WooCommerce I'm trying to get the cart total when hooking into woocommerce_add_to_cart. That works, but the cart total returned is the total prior to the last added item. I want the updated total, to be able to display a notice regarding shipping costs.

Any idea how to achieve this?

My current code:

function oppsalg_add_to_cart() {
    global $woocommerce;

    // Limit
    $minimum_cart_total = 1000;

    // Cart value (Not including the last added item)
    $total = WC()->cart->subtotal;

    // Comparison
    if( $total < $minimum_cart_total ) {
        // Display notice
        wc_add_notice( sprintf( '<strong>Shipping is free above %s.</strong>'
            .'<br />Your total is %s. Perhaps you would like to add more items?',
            $minimum_cart_total,
            $total ),
        'notice' );
    }
}
add_action('woocommerce_add_to_cart', 'oppsalg_add_to_cart');
  • 写回答

1条回答 默认 最新

  • dongzhong7443 2017-11-02 06:19
    关注

    Here you go, just tested this solution on adding a single page product to the cart without AJAX. This won't modify the message you see when you change the cart quantity on the Cart page though via AJAX. Also you should make the shipping cost dynamic so that it's not hard coded like I have done below, that can be your homework to fix.

    add_filter( 'wc_add_to_cart_message_html', 'modify_wc_add_to_cart_message_html', 10, 2 );
    
    function modify_wc_add_to_cart_message_html( $message, $products ) {
    
        $minimum_cart_total = 100;
        $cart_total = WC()->cart->cart_contents_total;
    
        if( $cart_total < $minimum_cart_total ) {
            $message = sprintf( '<strong>Shipping is free above %s.</strong>'
                                .'<br />Your total is %s. Perhaps you would like to add more items?',
                                wc_price( $minimum_cart_total ),
                                wc_price( $cart_total )
                                );
        }
    
        return $message;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 oracle集群安装出bug
  • ¥15 关于#python#的问题:自动化测试
  • ¥20 问题请教!vue项目关于Nginx配置nonce安全策略的问题
  • ¥15 教务系统账号被盗号如何追溯设备
  • ¥20 delta降尺度方法,未来数据怎么降尺度
  • ¥15 c# 使用NPOI快速将datatable数据导入excel中指定sheet,要求快速高效
  • ¥15 再不同版本的系统上,TCP传输速度不一致
  • ¥15 高德地图点聚合中Marker的位置无法实时更新
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题