繁体   English   中英

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

[英]Add order number as custom order item meta data in 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 );

因为我的所有订单都以“暂停”状态开始,所以我在订单处于此状态时添加了订单项元数据,而不是在创建订单时添加它。 这将返回订单号而不是 0。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM