woocommerce独特的订单号或不同产品的发票号

时间:2018-04-12 05:36:15

标签: php wordpress woocommerce

我正在建立一个销售四种不同产品的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

1 个答案:

答案 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');