![](/img/trans.png)
[英]WooCommerce adding product variations programatically with different price will not reflect on the product page
[英]Set Variable Product Price before adding in WooCommerce order programatically
在購物車中,我添加了一個用於創建報價單的按鈕。 我使用的是數量范圍定價插件,因此我所有的可變產品都有廣泛的定價范圍。
例如。 數量小於100時,產品A的物料成本為5美元 。 數量為100至199時,商品成本為$ 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.