Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Woocommerce 如果两个或三个产品一起添加到购物车中,则更改其价格。吴哥商业_Woocommerce_Hook Woocommerce - Fatal编程技术网

Woocommerce 如果两个或三个产品一起添加到购物车中,则更改其价格。吴哥商业

Woocommerce 如果两个或三个产品一起添加到购物车中,则更改其价格。吴哥商业,woocommerce,hook-woocommerce,Woocommerce,Hook Woocommerce,下午好! 请帮助我在woocommerce中实现此功能。 我有三个特定的产品(具有特定的ID 2、3、4)。 我需要确保在将其中两个添加到购物车时,它们的价格都会自动更改。例如,对于id为2的产品,价格设置为100美元,而对于id为3的产品,价格设置为200美元。 此外,当它们全部加在一起(其中三个)时,它们的价格都发生了变化:产品2=100;产品#3=200;产品#4=250 我还没有在任何地方找到类似的东西,因此我希望得到任何提示。我自己设法解决了这个问题。 我确保我需要的产品在篮子里互相“

下午好! 请帮助我在woocommerce中实现此功能。 我有三个特定的产品(具有特定的ID 2、3、4)。 我需要确保在将其中两个添加到购物车时,它们的价格都会自动更改。例如,对于id为2的产品,价格设置为100美元,而对于id为3的产品,价格设置为200美元。 此外,当它们全部加在一起(其中三个)时,它们的价格都发生了变化:产品2=100;产品#3=200;产品#4=250


我还没有在任何地方找到类似的东西,因此我希望得到任何提示。

我自己设法解决了这个问题。 我确保我需要的产品在篮子里互相“监视”。如果其中一方“注意到”另一方,则两方的价格都会更新。 同样地,如果三个人同时在篮子里“看到”对方,价格也会更新。 它可能不是最好的代码,但它工作得很好

原始代码取自此资源,并由我为执行任务而修改。 ()

function simple_func_product_in_cart($product_id){

    $product_cart_id = WC()->cart->generate_cart_id( $product_id );
    $in_cart = WC()->cart->find_product_in_cart( $product_cart_id );
 
    if ( $in_cart ) {
        return true;
    }
    return false;
}


add_action( 'woocommerce_before_calculate_totals', 'simple_change_price_of_product' );

function simple_change_price_of_product( $cart_object ) {   
    $target_product_id = 7101; // CHANGE THIS WITH YOUR PRODUCT ID
    if(simple_product_in_cart(7105)) {
    // Product is already in cart
        foreach ( $cart_object->get_cart() as $key => $value ) {
            if ( $value['product_id'] == $target_product_id ) {
                $value['data']->set_price(160); // CHANGE THIS: set the new price
                $new_price = $value['data']->get_price();
            }
        }
    }
    
    $target_product_id = 7101; // CHANGE THIS WITH YOUR PRODUCT ID
    if(simple_product_in_cart(7107)) {
    // Product is already in cart
        foreach ( $cart_object->get_cart() as $key => $value ) {
            if ( $value['product_id'] == $target_product_id ) {
                $value['data']->set_price(160); // CHANGE THIS: set the new price
                $new_price = $value['data']->get_price();
            }
        }
    }
    
    $target_product_id = 7105; // CHANGE THIS WITH YOUR PRODUCT ID
    if(simple_product_in_cart(7101)) {
    // Product is already in cart
        foreach ( $cart_object->get_cart() as $key => $value ) {
            if ( $value['product_id'] == $target_product_id ) {
                $value['data']->set_price(170); // CHANGE THIS: set the new price
                $new_price = $value['data']->get_price();
            }
        }
    }
    
    $target_product_id = 7105; // CHANGE THIS WITH YOUR PRODUCT ID
    if(simple_product_in_cart(7107)) {
    // Product is already in cart
        foreach ( $cart_object->get_cart() as $key => $value ) {
            if ( $value['product_id'] == $target_product_id ) {
                $value['data']->set_price(170); // CHANGE THIS: set the new price
                $new_price = $value['data']->get_price();
            }
        }
    }
    
    $target_product_id = 7107; // CHANGE THIS WITH YOUR PRODUCT ID
    if(simple_product_in_cart(7101)) {
    // Product is already in cart
        foreach ( $cart_object->get_cart() as $key => $value ) {
            if ( $value['product_id'] == $target_product_id ) {
                $value['data']->set_price(180); // CHANGE THIS: set the new price
                $new_price = $value['data']->get_price();
            }
        }
    }
    
    $target_product_id = 7107; // CHANGE THIS WITH YOUR PRODUCT ID
    if(simple_product_in_cart(7105)) {
    // Product is already in cart
        foreach ( $cart_object->get_cart() as $key => $value ) {
            if ( $value['product_id'] == $target_product_id ) {
                $value['data']->set_price(180); // CHANGE THIS: set the new price
                $new_price = $value['data']->get_price();
            }
        }
    }
}