如何在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
相关产品推荐
相关产品推荐

