在WooCommerce中添加订单号作为自定义订单项元数据



我试图将订单的订单号添加到每个单行项目。我们正在使用一个订单分割插件(https://woocommerce.com/products/split-orders/)和一个订单组合插件。

因此,为了能够跟踪产品最初来自哪里,我想在创建订单时将订单号作为元数据添加到行项目中。

我以前尝试过一些事情,像下面的代码,但是当我试图下订单时,我得到错误:

function action_woocommerce_new_order( $order_get_id ) { 
$items = $order_get_id->get_items();
foreach ( $items as $item ) {
$item->update_meta_data( 'order_nummer', $order_get_id );
$item->save_meta_data();
}
}
add_action( 'woocommerce_new_order', 'action_woocommerce_new_order', 10, 1 );

有谁能给我指个方向吗?,

您没有使用右勾拳,请尝试以下操作:

add_action('woocommerce_checkout_create_order_line_item', 'action_checkout_create_order_line_item', 10, 4 );
function action_checkout_create_order_line_item( $item, $cart_item_key, $values, $order ) {
$item->update_meta_data( 'order_number', $order->get_order_number() );
}

代码放在活动子主题(或活动主题)的functions.php文件中。它最好能工作。

注意:如果您希望这个自定义订单项元数据仅在管理订单中可见,请使用元键_order_number而不是order_number

最后我用下面的代码使它工作:

function print_order_line_item_meta( $items, $order ) {
$order_number = $order->get_order_number();
$items = $order->get_items();
foreach ( $items as $item ) {
$item->update_meta_data( '_org_ordernummer', $order_number );
$item->save_meta_data();
}
}
add_action( 'woocommerce_order_status_on-hold', 'print_order_line_item_meta', 10, 2 );

因为我的所有订单都以"on-hold"状态开始,所以我在订单具有此状态时添加了行项元,而不是在创建订单时添加它。这将返回订单号,而不是0。

最新更新