Benötige Hilfe bei der Aktualisierung meines Produktbestands auf der Seite „Bestellungen verwalten“ von WooCommerce. Ich habe derzeit einen Code, der funktioniert, aber er entfernt den Lagerbestand vom falschen Produkt. Weiß jemand warum?
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); } } }
问题是,你在每个订单项目后面添加了一个按钮和一个输入框,所以你有多个具有相同名称的隐藏输入框,它要么获取第一个隐藏输入框,要么获取最后一个,并且这就是更新的内容,你需要改变你的逻辑,只添加一个隐藏输入框,并在按钮点击时更改隐藏输入框的值,然后提交表单。