我正在建立一个销售四种不同产品的WooCommerce网上商店。
如何根据产品类型获得不同系列的订单号或发票号?
例如:产品'AA'的所有订单ID或发票编号应以AA开头,格式如AA001,AA002,AA003,AA004 ......
同样,产品'BB'的订单ID或发票号应该像BB001,BB002,BB003等。
如果无法做到这一点,我还可以根据产品类型为发票号或订单号添加自定义前缀。
例如:产品'AA'的发票/订单号,'BB'应包括'AA'或'BB'作为前缀,具体取决于销售情况。
所以我的发票或订单号序列可能看起来像AA001,BB002,CC003,AA004,CC005 ......即正常的发票号码序列继续,只是添加了前缀。
编辑:每个订单只有一个产品。
我在PHP中遇到了麻烦;因此,非常感谢任何有关如何实现这一目标的帮助或指示。
编辑2:下面的代码是在任何地方为订单ID添加前缀,但我需要将订单的实际SKU添加到前缀字段中。
add_filter( 'woocommerce_order_number', 'change_woocommerce_order_number' );
function change_woocommerce_order_number( $order_id ) {
$prefix = 'the product sku should go here';
$new_order_id = $prefix . $order_id;
return $new_order_id;
}
编辑3:此代码有效。 。
add_filter( 'woocommerce_order_number', 'change_woocommerce_order_number' );
function change_woocommerce_order_number( $order_id ) {
$order = new WC_Order( $order_id );
foreach ( $order->get_items() as $item_key => $item )
$product = $order->get_product_from_item( $item );
$sku = $product->get_sku();
$new_order_id = $sku . $order_id;
return $new_order_id;
}
在下面编辑了约翰的答案,并在这里添加了一些代码:https://gist.github.com/maxrice/7918315
答案 0 :(得分:0)
您可以使用woocommerce_order_number
过滤器来完成此操作。像这样的东西应该做的伎俩(我还没有测试过)。
function change_woocommerce_order_number($order_id) {
$order = new WC_Order($order_id);
$items = $order->get_items();
$first_item = $items[0];
$product_id = $first_item->get_product_id();
$product = new WC_Product($product_id);
$sku = $product->get_sku();
return $sku.$order_id;
}
add_filter('woocommerce_order_number', 'change_woocommerce_order_number');