创建具有特定ID的WooCommerce新订单

时间:2020-05-04 作者:Alexander Goroshev

我可以克隆每个产品的订单。但我需要用父ID创建自定义订单ID,并为其添加一些数字或字母。取决于按父级顺序克隆的数量。

以下是一个示例:

enter image description here

如果我从克隆元素#1092 它应该创建一个新订单#1092-1. 第二次克隆将创建#1092-2

下面是代码的一小部分:

function create_order( $original_order_id, ...
    try {
            $new_order = new WC_Order( ??? );
            $new_order->set_props( array( ...

1 个回复
最合适的回答,由SO网友:Alexey Giryayev 整理而成

好您可以为原始订单和克隆订单添加元数据。每次克隆项目时,只需为其添加+1即可。

function create_order( $original_order_id, ...
    try {
            $new_order = new WC_Order();
            $new_order->set_props( array( ...
    }

    $original_order = wc_get_order( $original_order_id );
    $order_item_num = $original_order->get_meta(\'_order_items_num\');
    if($order_item_num >= 1) {
        $new_order->update_meta_data( \'_order_item_num\', $order_item_num+1 );
        $new_order->save();
        $original_order->update_meta_data( \'_order_items_num\', $order_item_num+1 );
        $original_order->save();
    } else {
        $new_order->update_meta_data( \'_order_item_num\', \'1\' );
        $new_order->save();
        $original_order->update_meta_data( \'_order_items_num\', \'1\' );
        $original_order->save();
    }
现在您可以修改订单号

add_filter( \'woocommerce_order_number\', \'change_woocommerce_order_number\', 1, 2);
function change_woocommerce_order_number( $order_id, $order ) {
    $parent_id = $order->parent_id;
    if($parent_id != 0) {
        $parent_order = wc_get_order( $parent_id );
        $order_sub_num = $order->get_meta(\'_order_item_num\');
        return $parent_id . \'-\' . $order_sub_num;
    }
    return $order->id;
}

相关推荐

Posts order in grid

在我的主题中,我有一个显示特色帖子的网格。这张我很喜欢,但帖子的顺序不是我喜欢的:https://i.imgur.com/GzGwRXl.jpg在上面链接的照片上,你可以在红色矩形中看到帖子的当前顺序,下面是绿色矩形,用于说明我想如何显示它们。最大的网格将用于最新发布的帖子。在主题中显示此内容的代码在此处(如果需要,我可以发送包含代码的整个文件):function inner($posts, $td_column_number = \'\') { $buffy = \'\';&#