首页 > 解决方案 > Woocommerce 和 Wordpress - 如何在 woocommerce_checkout_create_order_line_item 上访问订单 ID

问题描述

当使用woocommerce_checkout_create_order_line_item.

但是,我似乎无法访问订单的 ID。

我已经使用过print_r($order)并且可以在其中看到订单详细信息,但在对象中看不到订单的 ID。这是因为它还没有生成吗?

    add_action('woocommerce_checkout_create_order_line_item', array($this, 'ticket_meta_to_line_item'), 20, 4 );

function ticket_meta_to_line_item( $item, $cart_item_key, $values, $order )
{
    $_p = $item->get_product();
    $key = 'Draw #';
    $order_id = $order->id;
    error_log( print_r( $order, true ) );

    if ( false !== ( $value = $_p->get_meta( $key, true ) ) )
    {
        $numbers = $this->add_tickets_to_order_meta($order_id, $order->get_user_id(), $_p->id);
        error_log( print_r( $numbers, true ) );
        $item->add_meta_data( $key , 1 , true );
    }

}

标签: phpwordpresswoocommerce

解决方案


如果您想添加元数据,则无需查找 Order_ID,从下面的代码中您可以轻松做到。

function _woocommerce_add_order_item_meta_new_ver($item,$cart_key,$values) { 

//HERE product_meta is just a random key I have used here, you have to use your key here
if (isset ( $values ['product_meta'] )) {

    foreach ( $values ['product_meta'] as $key => $val ) {

        $order_val = stripslashes( $val );

        if($val) {

            if($key == 'your_cart_item_key') {
                $item->add_meta_data('Your Key',$order_val);
            }

        }

    }   

 }

}
//This will add "Your Key" in your order_item_meta, just make sure you have used the same key "your_cart_item_key" in your cart_item_meta key too.

推荐阅读