WooCommerce: Obțineți informații despre comandă (total, articole etc.) de la obiectul $order

Publicat: 2018-05-16

În calitate de freelancer în dezvoltare WooCommerce, în fiecare zi repet multe operațiuni de codare care mă fac să pierd timpul. Una dintre ele este: „ Cum să obțin ____ dacă am variabila/obiectul $order? „.

De exemplu, „Cum pot obține totalul comenzii ”? Sau „Cum pot obține articolele comandate ”? Sau poate ID-ul comenzii, ID-ul clientului, informațiile de facturare , metoda de plată, rambursările totale și așa mai departe... sperăm că acest articol vă va ajuta și să economisiți timp!

După cum am văzut în alte articole, obțineți informații despre produs de la $product object și obțineți informații despre coș de la $cart object, nu întotdeauna puteți avea acces direct la variabila $order.

Uneori, este posibil să aveți disponibil $order_id, de exemplu. În acest scenariu, puteți „obține” obiectul de comandă cu funcția wc_get_order WooCommerce.

De asemenea, este posibil să obțineți informații despre $comandă dacă vă aflați într-un șablon de e-mail. Acest lucru poate fi util pentru a afișa informații suplimentare despre $order în comunicările dvs. tranzacționale sau pentru a declanșa funcții personalizate. Oricum, bucură-te!

1. Aveți acces la variabila $order

Hook-urile (do_action și apply_filters) folosesc argumente suplimentare care sunt transmise funcției. Dacă vă permit să utilizați obiectul „$order”, sunteți în afaceri. Iată cum puteți obține toate informațiile despre comandă:

// 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();
 
// Get and Loop Over Order Items
foreach ( $order->get_items() as $item_id => $item ) {
   $product_id = $item->get_product_id();
   $variation_id = $item->get_variation_id();
   $product = $item->get_product(); // see link above to get $product info
   $product_name = $item->get_name();
   $quantity = $item->get_quantity();
   $subtotal = $item->get_subtotal();
   $total = $item->get_total();
   $tax = $item->get_subtotal_tax();
   $tax_class = $item->get_tax_class();
   $tax_status = $item->get_tax_status();
   $allmeta = $item->get_meta_data();
   $somemeta = $item->get_meta( '_whatever', true );
   $item_type = $item->get_type(); // e.g. "line_item"
}

// Other Secondary Items Stuff
$order->get_items_key();
$order->get_items_tax_classes();
$order->get_item_count();
$order->get_item_total();
$order->get_downloadable_items();
$order->get_coupon_codes();
 
// Get Order Lines
$order->get_line_subtotal();
$order->get_line_tax();
$order->get_line_total();
 
// Get Order Shipping
$order->get_shipping_method();
$order->get_shipping_methods();
$order->get_shipping_to_display();
 
// Get Order Dates
$order->get_date_created();
$order->get_date_modified();
$order->get_date_completed();
$order->get_date_paid();
 
// Get Order User, Billing & Shipping Addresses
$order->get_customer_id();
$order->get_user_id();
$order->get_user();
$order->get_customer_ip_address();
$order->get_customer_user_agent();
$order->get_created_via();
$order->get_customer_note();
$order->get_address_prop();
$order->get_billing_first_name();
$order->get_billing_last_name();
$order->get_billing_company();
$order->get_billing_address_1();
$order->get_billing_address_2();
$order->get_billing_city();
$order->get_billing_state();
$order->get_billing_postcode();
$order->get_billing_country();
$order->get_billing_email();
$order->get_billing_phone();
$order->get_shipping_first_name();
$order->get_shipping_last_name();
$order->get_shipping_company();
$order->get_shipping_address_1();
$order->get_shipping_address_2();
$order->get_shipping_city();
$order->get_shipping_state();
$order->get_shipping_postcode();
$order->get_shipping_country();
$order->get_address();
$order->get_shipping_address_map_url();
$order->get_formatted_billing_full_name();
$order->get_formatted_shipping_full_name();
$order->get_formatted_billing_address();
$order->get_formatted_shipping_address();
 
// Get Order Payment Details
$order->get_payment_method();
$order->get_payment_method_title();
$order->get_transaction_id();
 
// Get Order URLs
$order->get_checkout_payment_url();
$order->get_checkout_order_received_url();
$order->get_cancel_order_url();
$order->get_cancel_order_url_raw();
$order->get_cancel_endpoint();
$order->get_view_order_url();
$order->get_edit_order_url();
 
// Get Order Status
$order->get_status();

// Get Thank You Page URL
$order->get_checkout_order_received_url();

2. Aveți acces la variabila $order_id

Dacă aveți acces la ID-ul comenzii (din nou, de obicei do_action sau apply_filters vă pot oferi acest lucru), trebuie să obțineți mai întâi obiectul comenzii. Apoi faceți exact aceleași lucruri ca mai sus.

// Get $order object from order ID
 
$order = wc_get_order( $order_id );
 
// Now you have access to (see above)...
 
if ( $order ) {
   $order->get_formatted_order_total( );
   // etc.
   // etc.
}

3. Aveți acces la variabila $email

Dacă lucrați cu e-mailuri WooCommerce, adesea veți avea obiectul $email disponibil ca parametru. Pentru a obține obiectul din asta, aveți nevoie de un pas suplimentar. Apoi faceți exact aceleași lucruri ca mai sus.

// Get $order object from $email
 
$order = $email->object;
 
// Now you have access to (see above)...
 
if ( $order ) {
   $order->get_id();
   $order->get_formatted_order_total( );
   // etc.
   // etc.
}