簡體   English   中英

以編程方式添加WooCommerce訂單之前,設置可變產品價格

[英]Set Variable Product Price before adding in WooCommerce order programatically

在購物車中,我添加了一個用於創建報價單的按鈕。 我使用的是數量范圍定價插件,因此我所有的可變產品都有廣泛的定價范圍。

例如。 數量小於100時,產品A的物料成本為5美元 數量為100199時,商品成本為$ 3

我的購物車顯示正確的商品成本,我設法檢索每個購物車商品的產品價格。 但是,我無法設置變動價格並將數據添加到訂單中。

有誰知道我該怎么解決?

        // Now we create the order
            $order = wc_create_order();

        // add products from cart to order
        $items = WC()->cart->get_cart();
        foreach($items as $item => $values) {

            $_product   = apply_filters( 'woocommerce_cart_item_product', $values['data'], $values, $item );

            $tieredPrice = WC()->cart->get_product_price($_product);

            $product_id = $values['product_id'];

            $product = wc_get_product($product_id);
            $quantity = (int)$values['quantity'];

            $var_id = $values['variation_id'];

            $variationsArray = array($values['variation']);
            $var_product = new WC_Product_Variation($var_id);
            $var_product->set_variation_price($tieredPrice); //how do I set variation price?

            $order->add_product($var_product, $quantity, $variationsArray);
        }

先感謝您。

在購物車中, $values['data']已經是WC_Product對象的實例,因此對於產品變體,它直接是WC_Product_Variation對象的實例,因此現在這很簡單。

WC_Product對象不存在set_variation_price()方法,它是set_price() ……

因此,您重新訪問的代碼將是:

// Now we create the order
$order = wc_create_order();

// Add products from cart to order
$cart = WC()->cart; // cart object
foreach( $cart->get_cart() as $cart_item_key => $cart_item) {
    $product   = $cart_item['data']; // An instance of the WC_Product object
    $qty = intval($cart_item['quantity']); // The quantity
    $tierced_price = $cart->get_product_price($_product); // your "tierced" price
    $product->set_price( $tierced_price ); // <==  <==  <==  <==  <==  <==  SET THE PRICE
    $args = array( $cart_item['variation'] ); // empty if not a variation

    $order->add_product( $product, $qty, $args );
}

這應該工作

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM