微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Woocommerce以简码显示自定义购物车总数

如何解决Woocommerce以简码显示自定义购物车总数

我正在尝试在简码中显示woocommerce自定义购物车的总金额。该代码计算购物车的总额,然后减去“ funeral-types-new”类别中任何产品的价格,以显示小计。这是代码

add_shortcode( 'quote-total','quote_total' );
function quote_total(){   

$total = $woocommerce->cart->total; 

    foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
    $_product   = apply_filters( 'woocommerce_cart_item_product',$cart_item['data'],$cart_item,$cart_item_key );

        if ( has_term( 'funeral-types-new','product_cat',$_product->id) ) {
            $disbursement = apply_filters( 'woocommerce_cart_item_price',WC()->cart->get_product_price( $_product ),$cart_item_key );
        }
}

$subtotal = $total-$disbursement;

echo '<div>'.$subtotal.'</div><div> + '.$disbursement.'</div>';

}

$ disbursement显示正常,但是$ subtotal显示为0,所以我认为$ subtotal = $ total- $ dispossement部分可能有问题;?

非常感谢任何帮助。

解决方法

您的代码中有很多错误,例如:

  • 以简码显示不会回显而是返回,
  • WC_Cart get_product_price() method显示格式化的产品价格,仅供显示, _要检查购物车商品上的产品类别,请始终使用$ cart_item ['product_id']代替...

所以请尝试:

add_shortcode( 'quote-total','get_quote_total' );
function get_quote_total(){
    $total        = WC()->cart->total;
    $disbursement = 0; // Initializng
    
    // Loop through cart items
    foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
        if ( has_term( array('funeral-types-new'),'product_cat',$cart_item['product_id'] ) ) {
            $disbursement += $cart_item['line_total'] + $cart_item['line_tax'];
        }
    }
    
    $subtotal = $total - $disbursement;
    
    return '<div>'.wc_price($subtotal).'</div><div> + '.wc_price($disbursement).'</div>';
}

// USAGE: [quote-total] 
//    or: echo do_shortcode('[quote-total]');

应该更好地工作。

,

您是否不考虑使用

WC()->cart->get_subtotal();

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?