Куда вы положили этот код? Какой вывод подсказал вам, что возникла проблема? Какого результата вы ожидали? Откуда $order_idв вашем примере? Чтобы пользователи могли вам помочь, требуется больше контекста.
Натан Доусон
1
Минус 1 в том, что это несложный вопрос. Таким образом, это расплывчато. Я согласен с Натаном, здесь требуется гораздо больше контекста.
helgatheviking
1
@LoicTheAztec Я хотел указать способ доставки, выбранный во время заказа. поэтому я не нашел в массиве, который вы напечатали. Я получил это, $order = new \WC_Order($order_id); $ship_method = $order->get_shipping_methods(); foreach($ship_method as $SHPM) { $wooorder['_selected_shipping_method'] = $SHPM['name']; } поэтому вставил имя метода в массив и получил желаемый результат. Ваша помощь очень ценится!
Фейсал Иджаз,
1
Несмотря на то, что принятый ответ высокого качества (хотя и завышенный), мне интересно, почему сам вопрос не был отмечен как слишком расплывчатый и не требующий больших усилий?
Dhaval Shah
Ответы:
268
ЗАКАЗЫ WOOCOMMERCE В ВЕРСИИ 3.0+
Со времени мега крупного обновления Woocommerce 3.0+ многое изменилось:
Для WC_OrderObject свойства больше не могут быть доступны напрямую, как раньше, и будут вызывать некоторые ошибки.
Новые WC_Orderи WC_Abstract_Orderметоды получения и установки теперь требуется на WC_Orderэкземпляр объекта.
Также есть несколько новых классов для предметов заказа:
Таким образом, свойства элементов заказа не будут доступны, как раньше, в foreachцикле, и вам придется вместо этого использовать эти конкретные методы получения и установки .
Использование некоторых WC_Orderи WC_Abstract_Orderметодов (пример):
// Get an instance of the WC_Order object (same as before)
$order = wc_get_order( $order_id );
$order_id = $order->get_id(); // Get the order ID
$parent_id = $order->get_parent_id(); // Get the parent order ID (for subscriptions…)
$user_id = $order->get_user_id(); // Get the costumer ID
$user = $order->get_user(); // Get the WP_User object
$order_status = $order->get_status(); // Get the order status (see the conditional method has_status() below)
$currency = $order->get_currency(); // Get the currency used
$payment_method = $order->get_payment_method(); // Get the payment method ID
$payment_title = $order->get_payment_method_title(); // Get the payment method title
$date_created = $order->get_date_created(); // Get date created (WC_DateTime object)
$date_modified = $order->get_date_modified(); // Get date modified (WC_DateTime object)
$billing_country = $order->get_billing_country(); // Customer billing country// ... and so on ...
Для статуса заказа как условного метода (где необходимо определить "the_targeted_status" и заменить его статусом заказа для нацеливания на конкретный статус заказа) :
if ( $order->has_status('completed') ) {
// Do something
}
Получение и доступ к свойствам данных заказа (в массиве значений):
// Get an instance of the WC_Order object
$order = wc_get_order( $order_id );
$order_data = $order->get_data(); // The Order data
$order_id = $order_data['id'];
$order_parent_id = $order_data['parent_id'];
$order_status = $order_data['status'];
$order_currency = $order_data['currency'];
$order_version = $order_data['version'];
$order_payment_method = $order_data['payment_method'];
$order_payment_method_title = $order_data['payment_method_title'];
$order_payment_method = $order_data['payment_method'];
$order_payment_method = $order_data['payment_method'];
## Creation and modified WC_DateTime Object date string ##// Using a formated date ( with php date() function as method)
$order_date_created = $order_data['date_created']->date('Y-m-d H:i:s');
$order_date_modified = $order_data['date_modified']->date('Y-m-d H:i:s');
// Using a timestamp ( with php getTimestamp() function as method)
$order_timestamp_created = $order_data['date_created']->getTimestamp();
$order_timestamp_modified = $order_data['date_modified']->getTimestamp();
$order_discount_total = $order_data['discount_total'];
$order_discount_tax = $order_data['discount_tax'];
$order_shipping_total = $order_data['shipping_total'];
$order_shipping_tax = $order_data['shipping_tax'];
$order_total = $order_data['total'];
$order_total_tax = $order_data['total_tax'];
$order_customer_id = $order_data['customer_id']; // ... and so on## BILLING INFORMATION:
$order_billing_first_name = $order_data['billing']['first_name'];
$order_billing_last_name = $order_data['billing']['last_name'];
$order_billing_company = $order_data['billing']['company'];
$order_billing_address_1 = $order_data['billing']['address_1'];
$order_billing_address_2 = $order_data['billing']['address_2'];
$order_billing_city = $order_data['billing']['city'];
$order_billing_state = $order_data['billing']['state'];
$order_billing_postcode = $order_data['billing']['postcode'];
$order_billing_country = $order_data['billing']['country'];
$order_billing_email = $order_data['billing']['email'];
$order_billing_phone = $order_data['billing']['phone'];
## SHIPPING INFORMATION:
$order_shipping_first_name = $order_data['shipping']['first_name'];
$order_shipping_last_name = $order_data['shipping']['last_name'];
$order_shipping_company = $order_data['shipping']['company'];
$order_shipping_address_1 = $order_data['shipping']['address_1'];
$order_shipping_address_2 = $order_data['shipping']['address_2'];
$order_shipping_city = $order_data['shipping']['city'];
$order_shipping_state = $order_data['shipping']['state'];
$order_shipping_postcode = $order_data['shipping']['postcode'];
$order_shipping_country = $order_data['shipping']['country'];
Получить детали заказа и получить доступ к данным с WC_Order_Item_Productи WC_Order_Itemметодами:
// Get an instance of the WC_Order object
$order = wc_get_order($order_id);
// Iterating through each WC_Order_Item_Product objectsforeach ($order->get_items() as $item_key => $item ):
## Using WC_Order_Item methods ##// Item ID is directly accessible from the $item_key in the foreach loop or
$item_id = $item->get_id();
## Using WC_Order_Item_Product methods ##
$product = $item->get_product(); // Get the WC_Product object
$product_id = $item->get_product_id(); // the Product id
$variation_id = $item->get_variation_id(); // the Variation id
$item_type = $item->get_type(); // Type of the order item ("line_item")
$item_name = $item->get_name(); // Name of the product
$quantity = $item->get_quantity();
$tax_class = $item->get_tax_class();
$line_subtotal = $item->get_subtotal(); // Line subtotal (non discounted)
$line_subtotal_tax = $item->get_subtotal_tax(); // Line subtotal tax (non discounted)
$line_total = $item->get_total(); // Line total (discounted)
$line_total_tax = $item->get_total_tax(); // Line total tax (discounted)## Access Order Items data properties (in an array of values) ##
$item_data = $item->get_data();
$product_name = $item_data['name'];
$product_id = $item_data['product_id'];
$variation_id = $item_data['variation_id'];
$quantity = $item_data['quantity'];
$tax_class = $item_data['tax_class'];
$line_subtotal = $item_data['subtotal'];
$line_subtotal_tax = $item_data['subtotal_tax'];
$line_total = $item_data['total'];
$line_total_tax = $item_data['total_tax'];
// Get data from The WC_product object using methods (examples)
$product = $item->get_product(); // Get the WC_Product object
$product_type = $product->get_type();
$product_sku = $product->get_sku();
$product_price = $product->get_price();
$stock_quantity = $product->get_stock_quantity();
endforeach;
Таким образом, использование get_data()метода позволяет нам получить доступ к защищенным данным (режим ассоциативного массива)…
Использование get_data () отлично подходит для доступа к защищенным данным с помощью ассоциативного массива. Как раз эти 2 не работают: $ order_date_created = $ order_data ['date_created'] -> date; $ order_date_modified = $ order_data ['date_modified'] -> дата;
Tarik
@Tarik О да, вы правы ... Я протестировал и обновил свой ответ. Теперь работает. Спасибо
LoicTheAztec
Также я использую $ product_data = json_decode (get_product ($ item_values ['product_id']), true); в цикле foreach, чтобы получить сведения о продукте в виде массива, например: sku: $ product_data [sku] или slug: $ product_data [slug]
Тарик,
1
@Ravimallya Хорошо, просто используйте с объектом WC_Order $created_via = $order->get_created_via( );… или с $order_idиспользованием $created_via = get_post_meta( $order_id, '_created_via', true );… Оба работают.
LoicTheAztec 07
1
Небольшая ошибка: лучше использовать $order_total = $order_data['total']вместо $order_total = $order_data['cart_tax'];
Вот пользовательская функция, которую я сделал, чтобы прояснить для вас вещи, связанные с получением данных идентификатора заказа. Вы увидите все возможные выходы RAW и способы получения необходимых данных ...
Использование print_r()функции (или var_dump()функции тоже) позволяет выводить необработанные данные объекта или массива.
Итак, сначала я вывожу эти данные, чтобы показать иерархию объекта или массива. Затем я использую другой синтаксис в зависимости от типа этой переменной (строка, массив или объект) для вывода конкретных необходимых данных.
ВАЖНО: С $orderобъектом вы можете использовать большинство методовWC_order или (с использованием синтаксиса объекта)…WC_Abstract_Order
$order_id
в вашем примере? Чтобы пользователи могли вам помочь, требуется больше контекста.$order = new \WC_Order($order_id); $ship_method = $order->get_shipping_methods(); foreach($ship_method as $SHPM) { $wooorder['_selected_shipping_method'] = $SHPM['name']; }
поэтому вставил имя метода в массив и получил желаемый результат. Ваша помощь очень ценится!Ответы:
ЗАКАЗЫ WOOCOMMERCE В ВЕРСИИ 3.0+
Со времени мега крупного обновления Woocommerce 3.0+ многое изменилось:
WC_Order
Object свойства больше не могут быть доступны напрямую, как раньше, и будут вызывать некоторые ошибки.WC_Order
иWC_Abstract_Order
методы получения и установки теперь требуется наWC_Order
экземпляр объекта.WC_Order_Item
класс ,WC_Order_Item_Product
класс ,WC_Order_Item_Tax
класс ,WC_Order_Item_Shipping
класс ,WC_Order_Item_Coupon
класс ,WC_Order_Item_Fee
класс .WC_Data
Абстрактный класс позволяет данным заказа доступа и порядок элементов , используяget_data()
,get_meta_data()
иget_meta()
методу.Таким образом, свойства элементов заказа не будут доступны, как раньше, в
foreach
цикле, и вам придется вместо этого использовать эти конкретные методы получения и установки .Использование некоторых
WC_Order
иWC_Abstract_Order
методов (пример):// Get an instance of the WC_Order object (same as before) $order = wc_get_order( $order_id ); $order_id = $order->get_id(); // Get the order ID $parent_id = $order->get_parent_id(); // Get the parent order ID (for subscriptions…) $user_id = $order->get_user_id(); // Get the costumer ID $user = $order->get_user(); // Get the WP_User object $order_status = $order->get_status(); // Get the order status (see the conditional method has_status() below) $currency = $order->get_currency(); // Get the currency used $payment_method = $order->get_payment_method(); // Get the payment method ID $payment_title = $order->get_payment_method_title(); // Get the payment method title $date_created = $order->get_date_created(); // Get date created (WC_DateTime object) $date_modified = $order->get_date_modified(); // Get date modified (WC_DateTime object) $billing_country = $order->get_billing_country(); // Customer billing country // ... and so on ...
Получение и доступ к свойствам данных заказа (в массиве значений):
// Get an instance of the WC_Order object $order = wc_get_order( $order_id ); $order_data = $order->get_data(); // The Order data $order_id = $order_data['id']; $order_parent_id = $order_data['parent_id']; $order_status = $order_data['status']; $order_currency = $order_data['currency']; $order_version = $order_data['version']; $order_payment_method = $order_data['payment_method']; $order_payment_method_title = $order_data['payment_method_title']; $order_payment_method = $order_data['payment_method']; $order_payment_method = $order_data['payment_method']; ## Creation and modified WC_DateTime Object date string ## // Using a formated date ( with php date() function as method) $order_date_created = $order_data['date_created']->date('Y-m-d H:i:s'); $order_date_modified = $order_data['date_modified']->date('Y-m-d H:i:s'); // Using a timestamp ( with php getTimestamp() function as method) $order_timestamp_created = $order_data['date_created']->getTimestamp(); $order_timestamp_modified = $order_data['date_modified']->getTimestamp(); $order_discount_total = $order_data['discount_total']; $order_discount_tax = $order_data['discount_tax']; $order_shipping_total = $order_data['shipping_total']; $order_shipping_tax = $order_data['shipping_tax']; $order_total = $order_data['total']; $order_total_tax = $order_data['total_tax']; $order_customer_id = $order_data['customer_id']; // ... and so on ## BILLING INFORMATION: $order_billing_first_name = $order_data['billing']['first_name']; $order_billing_last_name = $order_data['billing']['last_name']; $order_billing_company = $order_data['billing']['company']; $order_billing_address_1 = $order_data['billing']['address_1']; $order_billing_address_2 = $order_data['billing']['address_2']; $order_billing_city = $order_data['billing']['city']; $order_billing_state = $order_data['billing']['state']; $order_billing_postcode = $order_data['billing']['postcode']; $order_billing_country = $order_data['billing']['country']; $order_billing_email = $order_data['billing']['email']; $order_billing_phone = $order_data['billing']['phone']; ## SHIPPING INFORMATION: $order_shipping_first_name = $order_data['shipping']['first_name']; $order_shipping_last_name = $order_data['shipping']['last_name']; $order_shipping_company = $order_data['shipping']['company']; $order_shipping_address_1 = $order_data['shipping']['address_1']; $order_shipping_address_2 = $order_data['shipping']['address_2']; $order_shipping_city = $order_data['shipping']['city']; $order_shipping_state = $order_data['shipping']['state']; $order_shipping_postcode = $order_data['shipping']['postcode']; $order_shipping_country = $order_data['shipping']['country'];
Получить детали заказа и получить доступ к данным с
WC_Order_Item_Product
иWC_Order_Item
методами:// Get an instance of the WC_Order object $order = wc_get_order($order_id); // Iterating through each WC_Order_Item_Product objects foreach ($order->get_items() as $item_key => $item ): ## Using WC_Order_Item methods ## // Item ID is directly accessible from the $item_key in the foreach loop or $item_id = $item->get_id(); ## Using WC_Order_Item_Product methods ## $product = $item->get_product(); // Get the WC_Product object $product_id = $item->get_product_id(); // the Product id $variation_id = $item->get_variation_id(); // the Variation id $item_type = $item->get_type(); // Type of the order item ("line_item") $item_name = $item->get_name(); // Name of the product $quantity = $item->get_quantity(); $tax_class = $item->get_tax_class(); $line_subtotal = $item->get_subtotal(); // Line subtotal (non discounted) $line_subtotal_tax = $item->get_subtotal_tax(); // Line subtotal tax (non discounted) $line_total = $item->get_total(); // Line total (discounted) $line_total_tax = $item->get_total_tax(); // Line total tax (discounted) ## Access Order Items data properties (in an array of values) ## $item_data = $item->get_data(); $product_name = $item_data['name']; $product_id = $item_data['product_id']; $variation_id = $item_data['variation_id']; $quantity = $item_data['quantity']; $tax_class = $item_data['tax_class']; $line_subtotal = $item_data['subtotal']; $line_subtotal_tax = $item_data['subtotal_tax']; $line_total = $item_data['total']; $line_total_tax = $item_data['total_tax']; // Get data from The WC_product object using methods (examples) $product = $item->get_product(); // Get the WC_Product object $product_type = $product->get_type(); $product_sku = $product->get_sku(); $product_price = $product->get_price(); $stock_quantity = $product->get_stock_quantity(); endforeach;
источник
$created_via = $order->get_created_via( );
… или с$order_id
использованием$created_via = get_post_meta( $order_id, '_created_via', true );
… Оба работают.$order_total = $order_data['total']
вместо$order_total = $order_data['cart_tax']
;Вот пользовательская функция, которую я сделал, чтобы прояснить для вас вещи, связанные с получением данных идентификатора заказа. Вы увидите все возможные выходы RAW и способы получения необходимых данных ...
Использование
print_r()
функции (илиvar_dump()
функции тоже) позволяет выводить необработанные данные объекта или массива.Вот код:
function get_order_details($order_id){ // 1) Get the Order object $order = wc_get_order( $order_id ); // OUTPUT echo '<h3>RAW OUTPUT OF THE ORDER OBJECT: </h3>'; print_r($order); echo '<br><br>'; echo '<h3>THE ORDER OBJECT (Using the object syntax notation):</h3>'; echo '$order->order_type: ' . $order->order_type . '<br>'; echo '$order->id: ' . $order->id . '<br>'; echo '<h4>THE POST OBJECT:</h4>'; echo '$order->post->ID: ' . $order->post->ID . '<br>'; echo '$order->post->post_author: ' . $order->post->post_author . '<br>'; echo '$order->post->post_date: ' . $order->post->post_date . '<br>'; echo '$order->post->post_date_gmt: ' . $order->post->post_date_gmt . '<br>'; echo '$order->post->post_content: ' . $order->post->post_content . '<br>'; echo '$order->post->post_title: ' . $order->post->post_title . '<br>'; echo '$order->post->post_excerpt: ' . $order->post->post_excerpt . '<br>'; echo '$order->post->post_status: ' . $order->post->post_status . '<br>'; echo '$order->post->comment_status: ' . $order->post->comment_status . '<br>'; echo '$order->post->ping_status: ' . $order->post->ping_status . '<br>'; echo '$order->post->post_password: ' . $order->post->post_password . '<br>'; echo '$order->post->post_name: ' . $order->post->post_name . '<br>'; echo '$order->post->to_ping: ' . $order->post->to_ping . '<br>'; echo '$order->post->pinged: ' . $order->post->pinged . '<br>'; echo '$order->post->post_modified: ' . $order->post->post_modified . '<br>'; echo '$order->post->post_modified_gtm: ' . $order->post->post_modified_gtm . '<br>'; echo '$order->post->post_content_filtered: ' . $order->post->post_content_filtered . '<br>'; echo '$order->post->post_parent: ' . $order->post->post_parent . '<br>'; echo '$order->post->guid: ' . $order->post->guid . '<br>'; echo '$order->post->menu_order: ' . $order->post->menu_order . '<br>'; echo '$order->post->post_type: ' . $order->post->post_type . '<br>'; echo '$order->post->post_mime_type: ' . $order->post->post_mime_type . '<br>'; echo '$order->post->comment_count: ' . $order->post->comment_count . '<br>'; echo '$order->post->filter: ' . $order->post->filter . '<br>'; echo '<h4>THE ORDER OBJECT (again):</h4>'; echo '$order->order_date: ' . $order->order_date . '<br>'; echo '$order->modified_date: ' . $order->modified_date . '<br>'; echo '$order->customer_message: ' . $order->customer_message . '<br>'; echo '$order->customer_note: ' . $order->customer_note . '<br>'; echo '$order->post_status: ' . $order->post_status . '<br>'; echo '$order->prices_include_tax: ' . $order->prices_include_tax . '<br>'; echo '$order->tax_display_cart: ' . $order->tax_display_cart . '<br>'; echo '$order->display_totals_ex_tax: ' . $order->display_totals_ex_tax . '<br>'; echo '$order->display_cart_ex_tax: ' . $order->display_cart_ex_tax . '<br>'; echo '$order->formatted_billing_address->protected: ' . $order->formatted_billing_address->protected . '<br>'; echo '$order->formatted_shipping_address->protected: ' . $order->formatted_shipping_address->protected . '<br><br>'; echo '- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <br><br>'; // 2) Get the Order meta data $order_meta = get_post_meta($order_id); echo '<h3>RAW OUTPUT OF THE ORDER META DATA (ARRAY): </h3>'; print_r($order_meta); echo '<br><br>'; echo '<h3>THE ORDER META DATA (Using the array syntax notation):</h3>'; echo '$order_meta[_order_key][0]: ' . $order_meta[_order_key][0] . '<br>'; echo '$order_meta[_order_currency][0]: ' . $order_meta[_order_currency][0] . '<br>'; echo '$order_meta[_prices_include_tax][0]: ' . $order_meta[_prices_include_tax][0] . '<br>'; echo '$order_meta[_customer_user][0]: ' . $order_meta[_customer_user][0] . '<br>'; echo '$order_meta[_billing_first_name][0]: ' . $order_meta[_billing_first_name][0] . '<br><br>'; echo 'And so on ……… <br><br>'; echo '- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <br><br>'; // 3) Get the order items $items = $order->get_items(); echo '<h3>RAW OUTPUT OF THE ORDER ITEMS DATA (ARRAY): </h3>'; foreach ( $items as $item_id => $item_data ) { echo '<h4>RAW OUTPUT OF THE ORDER ITEM NUMBER: '. $item_id .'): </h4>'; print_r($item_data); echo '<br><br>'; echo 'Item ID: ' . $item_id. '<br>'; echo '$item_data["product_id"] <i>(product ID)</i>: ' . $item_data['product_id'] . '<br>'; echo '$item_data["name"] <i>(product Name)</i>: ' . $item_data['name'] . '<br>'; // Using get_item_meta() method echo 'Item quantity <i>(product quantity)</i>: ' . $order->get_item_meta($item_id, '_qty', true) . '<br><br>'; echo 'Item line total <i>(product quantity)</i>: ' . $order->get_item_meta($item_id, '_line_total', true) . '<br><br>'; echo 'And so on ……… <br><br>'; echo '- - - - - - - - - - - - - <br><br>'; } echo '- - - - - - E N D - - - - - <br><br>'; }
Код находится в файле function.php вашей активной дочерней темы (или темы) или также в любом файле плагина.
Использование (например, если ID вашего заказа 159):
get_order_details(159);
Этот код протестирован и работает.
источник
Объясняется доступ к прямым свойствам и связанным с ними
// Get an instance of the WC_Order object $order = wc_get_order($order_id); $order_data = array( 'order_id' => $order->get_id(), 'order_number' => $order->get_order_number(), 'order_date' => date('Y-m-d H:i:s', strtotime(get_post($order->get_id())->post_date)), 'status' => $order->get_status(), 'shipping_total' => $order->get_total_shipping(), 'shipping_tax_total' => wc_format_decimal($order->get_shipping_tax(), 2), 'fee_total' => wc_format_decimal($fee_total, 2), 'fee_tax_total' => wc_format_decimal($fee_tax_total, 2), 'tax_total' => wc_format_decimal($order->get_total_tax(), 2), 'cart_discount' => (defined('WC_VERSION') && (WC_VERSION >= 2.3)) ? wc_format_decimal($order->get_total_discount(), 2) : wc_format_decimal($order->get_cart_discount(), 2), 'order_discount' => (defined('WC_VERSION') && (WC_VERSION >= 2.3)) ? wc_format_decimal($order->get_total_discount(), 2) : wc_format_decimal($order->get_order_discount(), 2), 'discount_total' => wc_format_decimal($order->get_total_discount(), 2), 'order_total' => wc_format_decimal($order->get_total(), 2), 'order_currency' => $order->get_currency(), 'payment_method' => $order->get_payment_method(), 'shipping_method' => $order->get_shipping_method(), 'customer_id' => $order->get_user_id(), 'customer_user' => $order->get_user_id(), 'customer_email' => ($a = get_userdata($order->get_user_id() )) ? $a->user_email : '', 'billing_first_name' => $order->get_billing_first_name(), 'billing_last_name' => $order->get_billing_last_name(), 'billing_company' => $order->get_billing_company(), 'billing_email' => $order->get_billing_email(), 'billing_phone' => $order->get_billing_phone(), 'billing_address_1' => $order->get_billing_address_1(), 'billing_address_2' => $order->get_billing_address_2(), 'billing_postcode' => $order->get_billing_postcode(), 'billing_city' => $order->get_billing_city(), 'billing_state' => $order->get_billing_state(), 'billing_country' => $order->get_billing_country(), 'shipping_first_name' => $order->get_shipping_first_name(), 'shipping_last_name' => $order->get_shipping_last_name(), 'shipping_company' => $order->get_shipping_company(), 'shipping_address_1' => $order->get_shipping_address_1(), 'shipping_address_2' => $order->get_shipping_address_2(), 'shipping_postcode' => $order->get_shipping_postcode(), 'shipping_city' => $order->get_shipping_city(), 'shipping_state' => $order->get_shipping_state(), 'shipping_country' => $order->get_shipping_country(), 'customer_note' => $order->get_customer_note(), 'download_permissions' => $order->is_download_permitted() ? $order->is_download_permitted() : 0, );
Дополнительные детали
$line_items_shipping = $order->get_items('shipping'); foreach ($line_items_shipping as $item_id => $item) { if (is_object($item)) { if ($meta_data = $item->get_formatted_meta_data('')) : foreach ($meta_data as $meta_id => $meta) : if (in_array($meta->key, $line_items_shipping)) { continue; } // html entity decode is not working preoperly $shipping_items[] = implode('|', array('item:' . wp_kses_post($meta->display_key), 'value:' . str_replace('×', 'X', strip_tags($meta->display_value)))); endforeach; endif; } } //get fee and total $fee_total = 0; $fee_tax_total = 0; foreach ($order->get_fees() as $fee_id => $fee) { $fee_items[] = implode('|', array( 'name:' . html_entity_decode($fee['name'], ENT_NOQUOTES, 'UTF-8'), 'total:' . wc_format_decimal($fee['line_total'], 2), 'tax:' . wc_format_decimal($fee['line_tax'], 2), )); $fee_total += $fee['line_total']; $fee_tax_total += $fee['line_tax']; } // get tax items foreach ($order->get_tax_totals() as $tax_code => $tax) { $tax_items[] = implode('|', array( 'rate_id:'.$tax->id, 'code:' . $tax_code, 'total:' . wc_format_decimal($tax->amount, 2), 'label:'.$tax->label, 'tax_rate_compound:'.$tax->is_compound, )); } // add coupons foreach ($order->get_items('coupon') as $_ => $coupon_item) { $coupon = new WC_Coupon($coupon_item['name']); $coupon_post = get_post((WC()->version < '2.7.0') ? $coupon->id : $coupon->get_id()); $discount_amount = !empty($coupon_item['discount_amount']) ? $coupon_item['discount_amount'] : 0; $coupon_items[] = implode('|', array( 'code:' . $coupon_item['name'], 'description:' . ( is_object($coupon_post) ? $coupon_post->post_excerpt : '' ), 'amount:' . wc_format_decimal($discount_amount, 2), )); } foreach ($order->get_refunds() as $refunded_items){ $refund_items[] = implode('|', array( 'amount:' . $refunded_items->get_amount(), 'reason:' . $refunded_items->get_reason(), 'date:'. date('Y-m-d H-i-s',strtotime((WC()->version < '2.7.0') ? $refunded_items->date_created : $refunded_items->get_date_created())), )); }
источник
$order = new WC_Order(get_query_var('order-received'));
источник