Получить метаданные элемента заказа в незащищенном массиве в Woocommerce 3 - PullRequest
0 голосов
/ 26 октября 2018

Есть ли другой метод для возврата мета-значений для пользовательских атрибутов, который не возвращает защищенный массив

foreach ($order->get_items() as $item_key => $item_values) {
    $item_id = $item_values->get_id();

    $item_meta_data = $item_values->get_meta_data();

    var_dump($item_meta_data); 

}

Он выводит:

object(WC_Meta_Data)#3433 (2) {
    ["current_data":protected]=>
    array(3) {
      ["id"]=>
      int(4690)
      ["key"]=>
      string(14) "pa_second-half"
      ["value"]=>
      string(11) "nutty-butty"
    }

Я также пытался this

$item_meta_data = $item_values->get_data();

$item_meta_data['key']

, который возвращает NULL.

1 Ответ

0 голосов
/ 26 октября 2018

Обновлено

Чтобы получить метаданные элементов заказа в незащищенном массиве, вы можете использовать WC_Order_Item метод get_formatted_meta_data().

Метод WC_Order_Item get_formatted_meta_data() имеет 2 необязательных аргумента:

  • $hideprefix, чтобы скрыть префиксмета-ключ (по умолчанию "_")
  • $include_all, включая все метаданные, а не только пользовательские метаданные (по умолчанию false)

Так в цикле foreach элементов заказа:

<code>foreach ( $order->get_items() as $item_id => $item ) {
    // Get all meta data in an unprotected array of objects
    $meta_data = $item->get_formatted_meta_data('_', true);

    // Raw output (testing)
    echo '<pre>'; var_dump($meta_data); echo '
';}

Вы получите незащищенный массив доступных объектов, например:

  [4690]=>
  object(stdClass)#0000 (4) {
    ["key"]=>
    string(14) "pa_second-half"
    ["value"]=>
    string(11) "nutty-butty"
    ["display_key"]=>
    string(11) "Second half"
    ["display_value"]=>
    string(12) "Nutty butty"
  }

Теперь вы можете напрямую получить значение из мета-ключа используя WC_Data метод get_meta() в элементах цикла foreach.

Так что для pa_second-half мета-ключ:

foreach ( $order->get_items() as $item_id => $item ) {
    $meta_data = $item->get_formatted_meta_data();

    // Get the meta data value
    $meta_value = $item->get_meta("pa_second-half");

    echo $meta_value; // Display the value
}

И будет отображаться: сумасшедший,

Тема по теме: Получить элементы заказа и WC_Order_Item_Product в Woocommerce 3

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