WooCommerce: احصل على معلومات الطلب (الإجمالي ، العناصر ، إلخ) من $ order Object

نشرت: 2018-05-16

بصفتي مستقلاً لتطوير WooCommerce ، أكرر كل يوم العديد من عمليات الترميز التي تجعلني أضيع الوقت. واحد منهم هو: " كيف أحصل على ____ إذا كان لدي متغير / كائن الطلب $؟ ".

على سبيل المثال ، "كيف يمكنني الحصول على إجمالي الطلب "؟ أو "كيف يمكنني الحصول على عناصر الطلب "؟ أو ربما معرّف الطلب ومعرف العميل ومعلومات الفوترة وطريقة الدفع وإجمالي المبالغ المستردة وما إلى ذلك ... نأمل أن تساعدك هذه المقالة في توفير الوقت أيضًا!

كما رأينا في مقالات أخرى ، احصل على معلومات المنتج من $ product object واحصل على معلومات سلة التسوق من $ cart object ، ولا يمكنك دائمًا الوصول المباشر إلى متغير الطلب $.

في بعض الأحيان ، قد يتوفر لديك $ order_id على سبيل المثال. في هذا السيناريو ، يمكنك "الحصول" على كائن الطلب باستخدام وظيفة wc_get_order WooCommerce.

من الممكن أيضًا الحصول على معلومات طلب $ إذا كنت في قالب بريد إلكتروني. يمكن أن يكون هذا مفيدًا في إظهار معلومات طلب الدولار الإضافية في اتصالات المعاملات الخاصة بك أو تشغيل وظائف مخصصة. في كلتا الحالتين ، استمتع!

1. يمكنك الوصول إلى متغير الطلب بالدولار

تستخدم الخطافات (do_action و application_filters) وسيطات إضافية يتم تمريرها إلى الوظيفة. إذا سمحوا لك باستخدام الكائن "$ 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();
 
// 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. يمكنك الوصول إلى المتغير order_id $

إذا كان لديك وصول إلى معرّف الطلب (مرة أخرى ، عادةً ما يمنحك do_action أو application_filters هذا) ، فيجب عليك الحصول على كائن الطلب أولاً. ثم افعل نفس الأشياء كما هو مذكور أعلاه.

// 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. لديك حق الوصول إلى متغير البريد الإلكتروني دولار

إذا كنت تعمل مع رسائل WooCommerce الإلكترونية ، فغالبًا ما يكون لديك كائن البريد الإلكتروني $ متاحًا كمعامل. من أجل الحصول على الكائن من ذلك ، تحتاج إلى خطوة إضافية. ثم افعل نفس الأشياء كما هو مذكور أعلاه.

// 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.
}