为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
慕森卡 2024-01-19 10:27:09
我正在尝试在短代码中显示 woocommerce 自定义购物车总金额。该代码获取购物车总计,然后减去“葬礼类型新”类别中任何产品的价格以显示小计。这是代码: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, $cart_item_key );        }}$subtotal = $total-$disbursement;echo '<div>'.$subtotal.'</div><div> + '.$disbursement.'</div>';}$disbursement 显示正常,但 $subtotal 显示 0,所以我认为 $subtotal = $total-$disbursement; 部分可能有问题?非常感谢任何帮助。
查看完整描述

2 回答

?
猛跑小猪

TA贡献1858条经验 获得超8个赞

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

  • 在短代码中,显示永远不会回显而是返回,

  • WC_Cart get_product_price()方法显示格式化的产品价格仅用于显示,_要检查购物车项目上的产品类别,请始终使用 $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]');

它应该更好地工作。


查看完整回答
反对 回复 2024-01-19
?
智慧大石

TA贡献1946条经验 获得超3个赞

你有没有想过使用

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


查看完整回答
反对 回复 2024-01-19
  • 2 回答
  • 0 关注
  • 45 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信