需要帮助在WooCommerce管理订单页面上更新我的产品库存。我目前有一些代码可以工作,但它会从错误的产品中移除库存。有人知道为什么吗?
add_action( 'woocommerce_after_order_itemmeta', 'action_woocommerce_order_item_add_button', 10, 2); function action_woocommerce_order_item_add_button($item_id, $item) { $product = $item->get_product(); $id = $item->get_product_id(); echo ''; } add_action('save_post', 'renew_save_again', 10, 3); function renew_save_again($post_id, $post, $update){ $slug = 'shop_order'; if(is_admin()){ // If this isn't a 'woocommercer order' post, don't update it. if ( $slug != $post->post_type ) { return; } if(isset($_POST['renew_order_single_product']) && $_POST['renew_order_single_product']){ //removes stock for specified product global $woocommerce; $quantity = 0; $product_id = $_POST['renew_order_single_product']; $woocmmerce_instance = new WC_Product($product_id); $new_quantity=wc_update_product_stock( $woocmmerce_instance, $quantity); } } }
问题是,你在每个订单项目后面添加了一个按钮和一个输入框,所以你有多个具有相同名称的隐藏输入框,它要么获取第一个隐藏输入框,要么获取最后一个,并且这就是更新的内容,你需要改变你的逻辑,只添加一个隐藏输入框,并在按钮点击时更改隐藏输入框的值,然后提交表单。