簡體   English   中英

Woocommerce 付款后按ID更新庫存

[英]Woocommerce update stock by ID after payment

我為 WooCommerce 創建了一個自定義產品類型。 使用此產品類型,可以連接按 ID 存在的其他產品。

WooCommerce 下單付款成功,自動減少庫存。 例如,我將 ID 為 4082 的產品添加到購物車,數量為 3。下訂單后,WooCommerce 將產品 4082 的庫存更新為 -3。

好的,回到我的自定義產品類型。 正如我所說,可以通過 ID 連接另一個產品。 例如,我將產品 4082 與產品 ID 10988 連接起來。

如果客戶將產品 4082 添加到購物車並下訂單,我想從產品 ID 10988 而不是從 4082 減少庫存數量。

<?php
add_action('woocommerce_checkout_order_processed', 'stocktest');

function stocktest($order_id){
    $order = wc_get_order( $order_id );
    $order_item = $order->get_items();
    foreach( $order_item as $product ) {
    //for the topic I programmed the IDs hardcoded 
        if($product->ID == '4082'){
            wc_update_product_stock( 10998, $product['qty'], 'decrease', '' );
        }
    }
}
?>

我嘗試了上面的代碼,ID 10998 的庫存正確減少了,但 ID 4082 的庫存也減少了。

我用錯了鈎子嗎? 以及如何正確制作 function?

希望有人可以幫助我。

非常感謝

wc_update_product_stock( 4082, $product['qty'], 'increase', '' ); 不行?

那樣的話,應該為 4082 產品調整庫存。

此外,您的代碼段可能存在潛在問題。 $product變量是指4082產品的產品 object,而不是10998產品。

也許嘗試這樣的事情?

<?php
add_action('woocommerce_checkout_order_processed', 'stocktest');

function stocktest($order_id){
    $order = wc_get_order( $order_id );
    $order_item = $order->get_items();
    foreach( $order_item as $product ) {
    //for the topic I programmed the IDs hardcoded 
        if($product->ID == '4082'){
            $connected_qty = get_post_meta( 10988, '_stock', true );
            wc_update_product_stock( 10998, $connected_qty, 'decrease', '' );
            wc_update_product_stock( 4082, $product['qty'], 'increase', '' );
        }
    }
}
?>

您可以使用 WC_Product class,而不是使用自定義字段查詢:

$connected_product = wc_get_product(10998);
$connected_qty = $connected_product->get_stock_quantity();

我對你的問題做了一些研究。 WooCommerce 調用了很多函數來更新訂單/付款的庫存。 如果下訂單,項目將變為狀態 reduce_stock 是或否。 如果是的話 go 進一步更新這個項目的庫存。 在此之后 WooCommerce 創建了電子郵件和訂單注釋。

所有這些功能一起工作請注意更改文件wc-stock-functions.php中的代碼

如果您想更改並嘗試某些操作,例如在本地測試服務器上執行此操作。

這是文件中的一些函數

<?php
wc_maybe_reduce_stock_levels();
wc_maybe_increase_stock_levels();
wc_reduce_stock_levels();
wc_trigger_stock_change_notifications();
?>

暫無
暫無

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

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