【问题标题】:Add order number as custom order item meta data in WooCommerce在 WooCommerce 中添加订单号作为自定义订单项元数据
【发布时间】:2021-06-01 04:39:01
【问题描述】:

我正在尝试将已下订单的订单号添加到每个订单项。 我们正在使用订单拆分插件(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 );

谁能帮助我朝着正确的方向前进?

最好的,

【问题讨论】:

    标签: php woocommerce metadata hook-woocommerce orders


    【解决方案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

    【讨论】:

    • 谢谢,但结果是“0”。是否应该稍后调用该操作?问题:所以通过在元数据之前添加“_”使其仅对管理员可见?很高兴知道!谢谢
    【解决方案2】:

    最后我设法使它与以下代码一起工作:

    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。

    【讨论】:

      猜你喜欢
      • 2021-07-10
      • 2018-07-12
      • 2021-07-13
      • 1970-01-01
      • 1970-01-01
      • 2018-08-07
      • 2020-12-10
      • 1970-01-01
      • 2023-03-15
      相关资源
      最近更新 更多