You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 16:06:02