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

当定义的产品是 WooCommerce 购物车时添加折扣

当定义的产品是 WooCommerce 购物车时添加折扣

PHP
慕桂英4014372 2023-07-08 20:52:10
我试图为两种产品都在购物车中时设置折扣,无论其中还有其他什么产品。到目前为止,所需要的只是数组中的两个之一。add_action( 'woocommerce_cart_calculate_fees', 'discount_for_ab_products' );function discount_for_ab_products( $cart ) {$product_ids = array(34,35);    foreach ($product_ids as $product_id => $product) {    $product_cart_id = WC()->cart->generate_cart_id( $product );    $product_ab_in_cart = WC()->cart->find_product_in_cart( $product_cart_id );    if ( $product_ab_in_cart ) {                $discount = $cart->subtotal * 0.1;        $cart->add_fee( __( 'Discount', 'woocommerce' ) , -$discount );        }    }}
查看完整描述

1 回答

?
米脂

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

请尝试以下操作,当所有定义的产品 ID 都在购物车中时(在您的情况下是两个),这将提供折扣:


add_action( 'woocommerce_cart_calculate_fees', 'x_products_discount' );

function x_products_discount( $cart ) {

    // Settings below

    $product_ids = array(34, 35); // <== Your defined product Ids

    $percentage  = 10; // <== discount in percentage (10% here)


    $found_ids   = array();

    

    // Loop through cart items

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

        // Loop through defined product Ids

        foreach( $product_ids as $product_id ) {

            if( in_array( $product_id, array( $cart_item['product_id'], $cart_item['variation_id'] ) ) ) {

                $found_ids[$product_id] = $product_id;

                break;

            }

        }

    }

    

    // Discount part

    if( count( $found_ids ) === count( $product_ids ) ) {

        $cart->add_fee( __( 'Discount', 'woocommerce' ), -( $cart->subtotal * $percentage / 100 ) );

    }

}

代码位于活动子主题(或活动主题)的functions.php 文件中。经过测试并有效。


查看完整回答
反对 回复 2023-07-08
  • 1 回答
  • 0 关注
  • 139 浏览

添加回答

举报

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