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

如何在WooCommerce中将订单商品SKU及数量添加至订单编号

修改方案:用SKU+数量作为订单编号前缀

核心修改方向:

  • 遍历所有订单项,不再仅取第一个商品
  • 获取商品SKU(兼容普通商品与变体商品)
  • 拼接「购买数量xSKU」格式,多商品用下划线分隔
  • 处理SKU为空的边界情况

修改后的代码:

function filter_woocommerce_order_number( $order_id, $instance ) { 
    $order = wc_get_order( $order_id ); // 用WooCommerce推荐的函数获取订单对象,兼容性更好
    $items = $order->get_items();
    $sku_prefix_parts = [];

    foreach ( $items as $item ) {
        $product = $item->get_product();
        $sku = $product->get_sku();
        
        // 处理商品未设置SKU的情况,这里用「PROD-商品ID」替代,可按需改成商品名称
        if ( empty( $sku ) ) {
            $sku = 'PROD-' . $product->get_id();
        }
        
        $quantity = $item->get_quantity();
        // 拼接「数量xSKU」格式,替换SKU中的空格为下划线保证格式统一
        $sku_part = $quantity . 'x' . preg_replace('/\s+/', '_', $sku);
        $sku_prefix_parts[] = $sku_part;
    }

    // 组合前缀与原订单编号
    if ( !empty( $sku_prefix_parts ) ) {
        $prefix = implode( '_', $sku_prefix_parts );
        $new_order_number = $prefix . '_' . $order_id;
    } else {
        // 订单无商品时返回原编号(比如仅含虚拟服务的订单)
        $new_order_number = $order_id;
    }

    return $new_order_number; 
}; 
add_filter( 'woocommerce_order_number', 'filter_woocommerce_order_number', 10, 2 );

关键细节说明:

  • 变体商品兼容:通过$item->get_product()获取实际购买的商品(包括变体),确保拿到正确的SKU
  • 空SKU处理:避免因商品未设置SKU导致前缀异常,可根据需求调整替代规则
  • 格式统一:替换SKU中的空格为下划线,保证订单编号无特殊字符干扰

内容的提问来源于stack exchange,提问作者jojo1243

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 08:37:34