Di mana Anda meletakkan kode itu? Hasil apa yang menunjukkan bahwa ada masalah? Apa yang Anda harapkan hasilnya? Dari mana $order_idasalnya dalam contoh Anda? Lebih banyak konteks diperlukan bagi pengguna untuk membantu Anda.
Nathan Dawson
2
Minus 1 adalah karena ini pertanyaan yang mudah dilakukan. Karena itu, tidak jelas. Saya setuju dengan Nathan, lebih banyak konteks diperlukan di sini.
helgatheviking
1
@LoicTheAztec Saya ingin memilih metode pengiriman pada saat memesan. jadi saya tidak menemukan dalam array yang Anda cetak. Saya mendapatkan ini dengan $order = new \WC_Order($order_id); $ship_method = $order->get_shipping_methods(); foreach($ship_method as $SHPM) { $wooorder['_selected_shipping_method'] = $SHPM['name']; } memasukkan nama metode dalam array dan mendapatkan hasil yang diinginkan. Bantuan Anda sangat kami hargai!
Faisal Ijaz
1
Meskipun jawaban yang diterima berkualitas tinggi (betapapun berlebihannya), saya bertanya-tanya mengapa pertanyaan yang sebenarnya tidak ditandai karena terlalu kabur dan tidak terlalu rumit?
Dhaval Shah
Jawaban:
283
PESANAN WOOCOMMERCE DALAM VERSI 3.0+
Sejak Woocommerce mega Pembaruan utama 3.0+ banyak hal telah berubah cukup banyak:
Untuk WC_OrderObject, properti tidak bisa diakses secara langsung lagi seperti sebelumnya dan akan menimbulkan beberapa error.
Metode baru WC_Orderdan WC_Abstract_Orderpengambil dan penyetel sekarang diperlukan pada WC_Orderinstance objek.
Jadi, properti Order items tidak akan dapat diakses seperti sebelumnya dalam satu foreachputaran dan Anda harus menggunakan metode pengambil dan penyetel ini sebagai gantinya.
Menggunakan beberapa WC_Orderdan WC_Abstract_Ordermetode (contoh):
// 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 ...
Untuk status pesanan sebagai metode bersyarat (di mana "the_targeted_status" perlu ditentukan dan diganti dengan status pesanan untuk menargetkan status pesanan tertentu) :
if ( $order->has_status('completed') ) {
// Do something
}
Dapatkan dan akses ke properti data pesanan (dalam larik nilai):
// 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'];
Dapatkan item pesanan dan akses data dengan metode WC_Order_Item_Productdan 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;
Jadi dengan menggunakan get_data()metode memungkinkan kita untuk mengakses data yang dilindungi (mode array asosiatif)…
Menggunakan get_data () bagus untuk mengakses data yang dilindungi dengan larik asosiatif. Hanya 2 ini yang tidak berfungsi: $ order_date_created = $ order_data ['date_created'] -> date; $ order_date_modified = $ order_data ['date_modified'] -> tanggal;
Tarik
@Tarik Oh ya Anda benar… Saya telah menguji dan memperbarui jawaban saya. Sekarang ini berhasil. Terima kasih
LoicTheAztec
Juga, saya menggunakan $ product_data = json_decode (get_product ($ item_values ['product_id']), true); di loop depan untuk mendapatkan detail produk dalam larik seperti: sku: $ product_data [sku] atau slug: $ product_data [slug]
Tarik
1
@Ravimallya Ok jadi gunakan saja dengan objek WC_Order $created_via = $order->get_created_via( );… atau dengan $order_idpenggunaan $created_via = get_post_meta( $order_id, '_created_via', true );… Keduanya bekerja.
LoicTheAztec
1
Kesalahan Kecil di sini: penggunaan yang lebih baik $order_total = $order_data['total']daripada $order_total = $order_data['cart_tax'];
Berikut adalah fungsi khusus yang telah saya buat, untuk memperjelas hal-hal untuk Anda, terkait dengan mendapatkan data ID pesanan. Anda akan melihat semua keluaran RAW yang berbeda yang bisa Anda dapatkan dan cara mendapatkan data yang Anda butuhkan…
Menggunakan print_r()fungsi (atau var_dump()fungsi juga) memungkinkan untuk mengeluarkan data mentah dari suatu objek atau array.
Jadi pertama-tama saya mengeluarkan data ini untuk menunjukkan objek atau hierarki array. Kemudian saya menggunakan sintaks yang berbeda tergantung pada jenis variabel itu (string, array atau objek) untuk mengeluarkan data spesifik yang dibutuhkan.
PENTING: Dengan $orderobjek, Anda dapat menggunakan sebagian besar WC_orderatau metode (menggunakan sintaks objek)…WC_Abstract_Order
Anda bisa mendapatkan semua detail dengan objek pesanan.
// Get $order object from order ID$order = wc_get_order( $order_id );
// Now you have access to (see above)...if ( $order ) {
// Get Order ID and Key$order->get_id();
$order->get_order_key();
// Get Order Totals $0.00$order->get_formatted_order_total();
$order->get_cart_tax();
$order->get_currency();
$order->get_discount_tax();
$order->get_discount_to_display();
$order->get_discount_total();
$order->get_fees();
$order->get_formatted_line_subtotal();
$order->get_shipping_tax();
$order->get_shipping_total();
$order->get_subtotal();
$order->get_subtotal_to_display();
$order->get_tax_location();
$order->get_tax_totals();
$order->get_taxes();
$order->get_total();
$order->get_total_discount();
$order->get_total_tax();
$order->get_total_refunded();
$order->get_total_tax_refunded();
$order->get_total_shipping_refunded();
$order->get_item_count_refunded();
$order->get_total_qty_refunded();
$order->get_qty_refunded_for_item();
$order->get_total_refunded_for_item();
$order->get_tax_refunded_for_item();
$order->get_total_tax_refunded_by_rate_id();
$order->get_remaining_refund_amount();
}
$order_id
asalnya dalam contoh Anda? Lebih banyak konteks diperlukan bagi pengguna untuk membantu Anda.$order = new \WC_Order($order_id); $ship_method = $order->get_shipping_methods(); foreach($ship_method as $SHPM) { $wooorder['_selected_shipping_method'] = $SHPM['name']; }
memasukkan nama metode dalam array dan mendapatkan hasil yang diinginkan. Bantuan Anda sangat kami hargai!Jawaban:
PESANAN WOOCOMMERCE DALAM VERSI 3.0+
Sejak Woocommerce mega Pembaruan utama 3.0+ banyak hal telah berubah cukup banyak:
WC_Order
Object, properti tidak bisa diakses secara langsung lagi seperti sebelumnya dan akan menimbulkan beberapa error.WC_Order
danWC_Abstract_Order
pengambil dan penyetel sekarang diperlukan padaWC_Order
instance objek.WC_Order_Item
kelas ,WC_Order_Item_Product
kelas ,WC_Order_Item_Tax
kelas ,WC_Order_Item_Shipping
kelas ,WC_Order_Item_Coupon
kelas ,WC_Order_Item_Fee
kelas .WC_Data
kelas Abstrak memungkinkan untuk mengakses data Order dan item pesanan menggunakanget_data()
,get_meta_data()
danget_meta()
metode.Jadi, properti Order items tidak akan dapat diakses seperti sebelumnya dalam satu
foreach
putaran dan Anda harus menggunakan metode pengambil dan penyetel ini sebagai gantinya.Menggunakan beberapa
WC_Order
danWC_Abstract_Order
metode (contoh):// 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 ...
Dapatkan dan akses ke properti data pesanan (dalam larik nilai):
// 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'];
Dapatkan item pesanan dan akses data dengan metode
WC_Order_Item_Product
danWC_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;
sumber
$created_via = $order->get_created_via( );
… atau dengan$order_id
penggunaan$created_via = get_post_meta( $order_id, '_created_via', true );
… Keduanya bekerja.$order_total = $order_data['total']
daripada$order_total = $order_data['cart_tax']
;Berikut adalah fungsi khusus yang telah saya buat, untuk memperjelas hal-hal untuk Anda, terkait dengan mendapatkan data ID pesanan. Anda akan melihat semua keluaran RAW yang berbeda yang bisa Anda dapatkan dan cara mendapatkan data yang Anda butuhkan…
Menggunakan
print_r()
fungsi (atauvar_dump()
fungsi juga) memungkinkan untuk mengeluarkan data mentah dari suatu objek atau array.Ini kodenya:
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>'; }
Kode masuk file function.php dari tema anak aktif Anda (atau tema) atau juga di file plugin apa pun.
Penggunaan (jika ID pesanan Anda 159 misalnya):
get_order_details(159);
Kode ini diuji dan berfungsi.
sumber
Mengakses properti langsung dan yang terkait dijelaskan
// 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, );
Detil tambahan
$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())), )); }
sumber
Anda bisa mendapatkan semua detail dengan objek pesanan.
// Get $order object from order ID $order = wc_get_order( $order_id ); // Now you have access to (see above)... if ( $order ) { // Get Order ID and Key $order->get_id(); $order->get_order_key(); // Get Order Totals $0.00 $order->get_formatted_order_total(); $order->get_cart_tax(); $order->get_currency(); $order->get_discount_tax(); $order->get_discount_to_display(); $order->get_discount_total(); $order->get_fees(); $order->get_formatted_line_subtotal(); $order->get_shipping_tax(); $order->get_shipping_total(); $order->get_subtotal(); $order->get_subtotal_to_display(); $order->get_tax_location(); $order->get_tax_totals(); $order->get_taxes(); $order->get_total(); $order->get_total_discount(); $order->get_total_tax(); $order->get_total_refunded(); $order->get_total_tax_refunded(); $order->get_total_shipping_refunded(); $order->get_item_count_refunded(); $order->get_total_qty_refunded(); $order->get_qty_refunded_for_item(); $order->get_total_refunded_for_item(); $order->get_tax_refunded_for_item(); $order->get_total_tax_refunded_by_rate_id(); $order->get_remaining_refund_amount(); }
sumber
$order = new WC_Order(get_query_var('order-received'));
sumber