Woocommerce & amp; Wordpress - Как получить доступ к идентификатору заказа на woocommerce_checkout_create_order_line_item

Весь этот ответ находится в контексте соответствия спецификации, а не того, что движок делает в определенный момент или исторически.

Как правило, нет

. Фактический вопрос очень расплывчатый.

будут ли свойства в том же порядке, что я добавил их

В каком контексте?

Ответ: это зависит от ряда факторов. В общем, no .

Иногда да

Здесь вы можете рассчитывать на порядок ключей свойств для plain Objects:

  • Соответствующий ES2015 двигатель
  • Собственные свойства
  • Object.getOwnPropertyNames(), Reflect.ownKeys(), Object.getOwnPropertySymbols(O)

Во всех случаях эти методы включают неперечислимые ключи свойств и ключи заказа, указанные в [[OwnPropertyKeys]] (см. ниже). Они различаются по типу ключевых значений, которые они включают (String и / или Symbol). В этом контексте String включает целые значения.

Object.getOwnPropertyNames(O)

Возвращает собственные свойства String O ] ).

Reflect.ownKeys(O)

Возвращает O собственные String - и Symbol клавиши свойства.

Object.getOwnPropertySymbols(O)

Возвращает собственные свойства Symbol O.

[[OwnPropertyKeys]]

Порядок по существу: целочисленный Strings в порядке возрастания, нецелоподобный Strings в порядке создания, Символы в порядке создания. В зависимости от того, какая функция вызывает это, некоторые из этих типов могут не включаться.

Специфическим языком является то, что ключи возвращаются в следующем порядке:

  1. .. каждый собственный ключ свойства P O [объект, который повторяется], который является целым индексом, в порядке возрастания числового индекса
  2. ... каждый собственный ключ свойства P из O который является строкой, но не является целым индексом, в порядке создания свойства
  3. ... каждый собственный ключ свойства P из O, который является символом, в порядке создания свойства

Map

Если вас интересуют упорядоченные карты, вы должны рассмотреть возможность использования типа Map, введенного в ES2015, вместо обычного Objects.

0
задан Shaun 18 January 2019 в 09:57
поделиться

2 ответа

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

$order_id = $order->get_order_number();

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

0
ответ дан raju_eww 18 January 2019 в 09:57
поделиться

Если вы хотите добавить метаданные, вам не нужно искать 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
ответ дан Risha Tiwari 18 January 2019 в 09:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: