WooCommerce: Nhận Thông tin Đơn hàng (total, items, etc) Từ $order Object
Nhận Thông tin Đơn hàng từ Order Object? Là một freelancer phát triển WooCommerce, hàng ngày tôi lặp đi lặp lại nhiều thao tác viết mã khiến tôi lãng phí thời gian. Một trong số đó là: “How to get ____ if I have the $order variable/object?”.
Ví dụ: “How can I get the order total”? Hoặc “How can I get the order items“? Hoặc có thể là order ID, customer ID, billing info, payment method, total refunds, v.v.… hy vọng bài viết này cũng sẽ giúp bạn tiết kiệm thời gian!
Như chúng ta đã thấy trong các bài viết khác, lấy thông tin sản phẩm từ đối tượng $ product và nhận thông tin giỏ hàng từ đối tượng $ cart, không phải lúc nào bạn cũng có thể truy cập trực tiếp vào biến $ order.
Đôi khi, bạn có thể có $ order_id chẳng hạn. Trong trường hợp đó, bạn có thể “get” đối tượng đặt hàng bằng hàmchức năng wc_get_order của WooCommerce.
Bạn cũng có thể lấy thông tin $order nếu bạn đang ở trong một mẫu email. Điều này có thể hữu ích để hiển thị thông tin $order bổ sung trong thông tin liên lạc giao dịch của bạn hoặc kích hoạt các chức năng tùy chỉnh. Dù bằng cách nào, hãy tận hưởng!
1. Bạn có quyền truy cập vào biến $ order – Nhận Thông tin Đơn hàng từ Order Object
Hooks (do_action và apply_filters) sử dụng các đối số bổ sung được chuyển cho hàm. Nếu họ cho phép bạn sử dụng đối tượng “$ order” mà bạn đang kinh doanh. Dưới đây là cách nhận tất cả thông tin đặt hàng:
// 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();
$name = $item->get_name();
$quantity = $item->get_quantity();
$subtotal = $item->get_subtotal();
$total = $item->get_total();
$tax = $item->get_subtotal_tax();
$taxclass = $item->get_tax_class();
$taxstat = $item->get_tax_status();
$allmeta = $item->get_meta_data();
$somemeta = $item->get_meta( '_whatever', true );
$type = $item->get_type();
}
// 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();
// 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();
2. Bạn có quyền truy cập vào biến $ order_id – Nhận Thông tin Đơn hàng từ Order Object
Nếu bạn có quyền truy cập vào ID đơn đặt hàng (một lần nữa, thường do_action hoặc apply_filters có thể cung cấp cho bạn điều này), trước tiên bạn phải lấy đối tượng đặt hàng. Sau đó thực hiện các thao tác tương tự như trên.
// 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. Bạn có quyền truy cập vào biến $ email – Nhận Thông tin Đơn hàng từ Order Object
Nếu bạn đang làm việc với các email WooCommerce, thường thì bạn sẽ có sẵn đối tượng $ email dưới dạng tham số. Để có được đối tượng từ đó, bạn cần một bước bổ sung. Sau đó thực hiện các thao tác tương tự như trên.
// 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.
}
Thêm đoạn mã này vào đâu?
Bạn có thể đặt các đoạn mã PHP ở cuối tệp functions.php chủ đề con của mình (trước “?>” Nếu bạn có). Mặt khác, CSS có trong tệp style.css chủ đề con của bạn.
Đoạn mã này (vẫn) hoạt động chứ?
Vui lòng cho tôi biết trong phần bình luận nếu mọi thứ hoạt động như mong đợi. Tôi rất sẵn lòng sửa đổi đoạn mã nếu bạn có góp ý phù hợp (vui lòng cung cấp ảnh chụp màn hình).
Dịch vụ thiết kế website chuyên nghiệp tại Web MTP
Liên hệ ngay với chúng tôi nếu bạn đang gặp khó khăn trong việc thiết kế web nhé!
Website: https://webmtp.com/
Hotline: 0931 912 379
WooCommerce: Nhận thông tin sản phẩm (ID, SKU, $) từ $ product object
Mời bạn xem nhiều bài hấp dẫn khác