web-dev-qa-db-ja.com

カスタム価格のWooCommerce add_to_cart()

私はこのメソッドをajax呼び出しと組み合わせて使用​​して、コンフィギュレーターから私のカートに商品を設定します。

$ woocommerce-> cart-> add_to_cart($ p_id、$ p_quantity、$ p_var_id、$ p_var_name);

この方法で計算されたカスタム価格を設定する方法を教えてください。出来ますか?

ご挨拶、

マーヴィン

1
marvinski03

現在、関数$woocommerce->cart->add_to_cartDocumentation )を通して追加される商品にカスタム価格を追加する直接的な方法はありませんが、私たちは以下のコードで説明するバイパス方法を持っています

global $woocommerce;
$custom_price = 1000;
// Cart item data to send & save in order
$cart_item_data = array('custom_price' => $custom_price);   
// woocommerce function to add product into cart check its documentation also 
// what we need here is only $product_id & $cart_item_data other can be default.
$woocommerce->cart->add_to_cart( $product_id, $quantity, $variation_id, $variation, $cart_item_data );
// Calculate totals
$woocommerce->cart->calculate_totals();
// Save cart to session
$woocommerce->cart->set_session();
// Maybe set cart cookies
$woocommerce->cart->maybe_set_cart_cookies();

あなたの関数ファイルであなたはコードの下に置くことができます

 function woocommerce_custom_price_to_cart_item( $cart_object ) {  
    if( !WC()->session->__isset( "reload_checkout" )) {
        foreach ( $cart_object->cart_contents as $key => $value ) {
            if( isset( $value["custom_price"] ) ) {
                //for woocommerce version lower than 3
                //$value['data']->price = $value["custom_price"];
                //for woocommerce version +3
                $value['data']->set_price($value["custom_price"]);
            }
        }  
    }  
}
add_action( 'woocommerce_before_calculate_totals', 'woocommerce_custom_price_to_cart_item', 99 );

そしてあなたは行ってもいいです

2
AHSAN KHAN