Php Woocommerce在付款后按ID更新库存
我为WooCommerce创建了一个自定义产品类型。使用此产品类型,可以连接通过ID存在的其他产品 如果下订单且付款成功,WooCommerce将自动减少库存量。 例如,我将ID为4082的产品添加到购物车中,数量为3。 下此订单后,WooCommerce将产品4082中的库存更新为-3 好的,回到我的自定义产品类型。正如我所说,可以通过ID连接另一个产品。 例如,我将产品4082与产品ID 10988连接 如果客户将产品4082添加到购物车并下了我想要的订单,则从产品ID 10988而不是从4082减少库存量Php Woocommerce在付款后按ID更新库存,php,wordpress,woocommerce,Php,Wordpress,Woocommerce,我为WooCommerce创建了一个自定义产品类型。使用此产品类型,可以连接通过ID存在的其他产品 如果下订单且付款成功,WooCommerce将自动减少库存量。 例如,我将ID为4082的产品添加到购物车中,数量为3。 下此订单后,WooCommerce将产品4082中的库存更新为-3 好的,回到我的自定义产品类型。正如我所说,可以通过ID连接另一个产品。 例如,我将产品4082与产品ID 10988连接 如果客户将产品4082添加到购物车并下了我想要的订单,则从产品ID 10988而不是从4
<?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的库存也减少了
我用错钩子了吗?我怎样才能使函数正确
希望有人能帮我
非常感谢确实
wc\u更新了产品库存(4082美元,$product['qty'],'increase','')代码>不工作
这样,应针对4082产品调整库存
此外,您的代码片段可能存在潜在问题。$product
变量指的是4082
产品的产品对象,而不是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', '' );
}
}
}
?>
我对你的问题做了一些研究。WooCommerce调用了很多函数来更新股票af订单/付款。如果下了订单,项目将变为状态“减少库存”是或否。
如果是,请进一步更新此项目的库存。在此之后,WooCommerce创建了电子邮件和订单
所有这些函数一起工作请小心更改文件wc stock functions.php中的代码
如果您想要更改并尝试某些操作,请在本地testserver上执行此操作
这是文件中的一些函数
<?php
wc_maybe_reduce_stock_levels();
wc_maybe_increase_stock_levels();
wc_reduce_stock_levels();
wc_trigger_stock_change_notifications();
?>
<?php
wc_maybe_reduce_stock_levels();
wc_maybe_increase_stock_levels();
wc_reduce_stock_levels();
wc_trigger_stock_change_notifications();
?>