Woocommerce & Wordpress - Как получить доступ к идентификатору заказа на woocommerce_checkout_create_order_line_item - PullRequest
0 голосов
/ 18 января 2019

Я пытаюсь добавить метаданные к каждому продукту, когда заказ создан с помощью woocommerce_checkout_create_order_line_item.

Однако я не могу получить доступ к идентификатору заказа.

Я использовал print_r($order) и могу видеть там детали заказа, но не могу видеть идентификатор заказа внутри объекта. Это потому, что он еще не создан?

    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 );
    }

}

Ответы [ 2 ]

0 голосов
/ 19 января 2019

Если вы хотите добавить метаданные, вам не нужно искать 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.
0 голосов
/ 19 января 2019

Вы можете получить доступ к order id, используя приведенный ниже код.

$order_id = $order->get_order_number();

Протестировано и хорошо работает

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...