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

将零税级设置为 Woocommerce 中定义的产品类别中的特定项目计数

将零税级设置为 Woocommerce 中定义的产品类别中的特定项目计数

PHP
Qyouu 2023-04-21 16:59:54
在 WooCommerce 中,如果购物车包含来自 2 个特定类别的 6 件或更多商品,那么我只想为这些商品设置特定的税级(零税)(而不是整个购物车,所以不要为其他产品更改它) .我使用这段代码来计算购物车中来自 2 个类别的商品数量,但我找不到如何完成它以便将它们设置为我的“零税”税级。add_action( 'woocommerce_before_calculate_totals', 'apply_conditionally_taxes', 20, 1 );function apply_conditionally_taxes( $cart ){    $item_count   = $cart->get_cart_contents_count();    $kingcat_count = 0;    foreach ( $cart->get_cart() as $cart_item ) {        if ( has_term( 'patisseries', 'product_cat', $cart_item['product_id'] ) or has_term( 'viennoiseries-et-gaufres', 'product_cat', $cart_item['product_id'] ) ) {            $kingcat_count += $cart_item['quantity'];            //echo $kingcat_count;         }    }}
查看完整描述

1 回答

?
千巷猫影

TA贡献1829条经验 获得超7个赞

代码包含:(作为注释添加到代码中的解释)

  • 只统计属于某个类别的项目

  • 仅为这些项目设置特定的税级

function action_woocommerce_before_calculate_totals( $cart ) {

    if ( is_admin() && ! defined( 'DOING_AJAX' ) ) return;


    if ( did_action( 'woocommerce_before_calculate_totals' ) >= 2 ) return;


    /* SETTINGS */


    // Set categories

    $categories = array ( 'patisseries', 'viennoiseries-et-gaufres' );


    // Contains 6 or more items

    $contains_min = 6;


    /* END SETTINGS */


    // Counter

    $counter = 0;


    // Loop trough

    foreach ( $cart->get_cart() as $cart_item ) {

        // Break loop

        if ( $counter >= $contains_min ) {

            break;

        }


        // Has term

        if ( has_term( $categories, 'product_cat', $cart_item['product_id'] ) ) {

            // Add to counter

            $counter += $cart_item['quantity'];

        }

    }


    // Check

    if ( $counter >= $contains_min ) {

        // Loop trough

        foreach( $cart->get_cart() as $cart_item ) {

            // Has term

            if ( has_term( $categories, 'product_cat', $cart_item['product_id'] ) ) {

                // We set "Zero rate" tax class

                $cart_item['data']->set_tax_class( 'Zero rate' );

            }

        }

    }

}   

add_action( 'woocommerce_before_calculate_totals', 'action_woocommerce_before_calculate_totals', 10, 1 );



查看完整回答
反对 回复 2023-04-21
  • 1 回答
  • 0 关注
  • 90 浏览

添加回答

举报

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