求WooCommerce订单页增加库存按钮的PHP代码或插件解决方案
WooCommerce 订单页库存功能实现代码(适配 WC 5.6 / WP 5.8 / PHP 7.4)
方案1:新增发送报价前自动增加库存复选框
第一步:在订单编辑页添加复选框
// 在订单编辑页报价区域添加自动补库存复选框 add_action( 'woocommerce_admin_order_items_after_line_items', 'wc_add_restock_checkbox_before_quote', 10, 1 ); function wc_add_restock_checkbox_before_quote( $order_id ) { $order = wc_get_order( $order_id ); // 仅对未完成/待报价状态的订单显示复选框 if ( $order->has_status( array( 'pending', 'on-hold' ) ) ) { echo '<tr> <td colspan="2"> <label> <input type="checkbox" name="auto_restock_before_quote" value="1"> *发送报价前自动按订单项数量恢复库存* </label> </td> </tr>'; } }
第二步:绑定报价发送动作,勾选时自动增加库存
// 发送报价前执行库存恢复逻辑 add_action( 'woocommerce_before_order_quote_sent', 'wc_auto_restock_when_send_quote', 10, 2 ); function wc_auto_restock_when_send_quote( $order, $quote_data ) { // 校验复选框是否勾选 if ( isset( $_POST['auto_restock_before_quote'] ) && $_POST['auto_restock_before_quote'] == 1 ) { // 遍历所有订单项 foreach ( $order->get_items() as $item_id => $item ) { $product = $item->get_product(); if ( $product && $product->managing_stock() ) { $quantity = $item->get_quantity(); // 增加对应数量库存 wc_update_product_stock( $product, $quantity, 'increase' ); // 添加订单备注记录库存操作 $order->add_order_note( sprintf( '发送报价前自动恢复产品【%s】库存:%d件', $product->get_name(), $quantity ) ); } } $order->save(); } }
方案2:恢复订单页原有手动增加库存按钮
// 恢复WC 5.x版本移除的订单页手动增库存按钮 add_filter( 'woocommerce_order_item_show_restore_stock_button', '__return_true', 99 ); // 适配旧版权限校验规则,确保按钮可正常触发 add_filter( 'woocommerce_order_item_can_restore_stock', 'wc_allow_restore_stock_for_order_status', 10, 2 ); function wc_allow_restore_stock_for_order_status( $can_restore, $item ) { $order = $item->get_order(); // 允许待报价、待付款、处理中状态的订单执行库存恢复 if ( $order->has_status( array( 'pending', 'on-hold', 'processing' ) ) ) { return true; } return $can_restore; }
注意事项
- 代码请添加到当前使用主题的
functions.php文件末尾,或自定义功能插件的代码文件中 - 操作前请先备份网站文件与数据库,避免异常情况导致数据丢失
- 测试时建议先创建测试订单验证库存增减逻辑,确认符合预期后再正式使用
- 库存增加逻辑默认是按订单项的购买数量原路返还,如有特殊调整可自行修改代码中
$quantity对应的数值规则
内容的提问来源于stack exchange,提问作者Sleepyhollow
相关产品推荐
相关产品推荐

