Là một freelancer phát triển Woocommerce, Dai Pho rất thường gặp các yêu cầu code liên quan đến biến/đối tượng $order
. Có thể là ngày đặt hàng, ID khách hàng, thông tin thanh toán, phương thức thanh toán, trạng thái đơn hàng…
Đôi khi, bạn có thể có sẵn $order_id
. Trong trường hợp đó, bạn có thể “lấy” đối tượng order
bằng hàm wc_get_order
của Woocommerce. Bạn cũng có thể lấy thông tin $order
nếu bạn đang lập trình cho mẫu email. Điều này hữu ích để bạn hiển thị thêm thông tin cho đơn hàng.
Nếu bạn có thể truy cập vào biến $order
Khi lập trình plugin wordpress, bạn sẽ dùng các hook (gồm cả do_action
và apply_filters
) sử dụng các đối số bổ sung được truyền vào hàm. Dưới đây là cách lấy Daipho tất cả thông tin đặt hàng:
<?php
//Lấy Order ID và Key
$order->get_id();
$order->get_order_key();
// Get Order Totals
$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_total_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();
// Lấy và duyệt qua các mục $order
foreach ( $order->get_items() as $item_id => $item ) {
$product_id = $item->get_product_id();
$variation_id = $item->get_variation_id();
$product = $item->get_product();
//Daipho lấy thông tin $product chỗ này
$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(); //Ví dụ "line_item", "fee"
}
// 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();
Nếu Bạn có quyền truy cập vào biến $order_id
Nếu bạn có quyền truy cập vào ID đơn hàng (thông thường do_action
hoặc apply_filters
sẽ cung cấp cho bạn điều này), trước tiên bạn phải lấy đối tượng order
. Sau đó thực hiện các thao tác tương tự như trên và nhận trạng thái đơn hàng, thanh toán đơn hàng, vận chuyển đơn hàng, v.v.
// Lấy đối tượng $order từ ID đơn hàng
$order = wc_get_order( $order_id );
if ( $order ) {
$order->get_formatted_order_total( );
// các dòng lệnh khác
}
Làm việc trong biến email của Woocommerce
Nếu bạn đang làm việc với email Woocommerce, thông thường bạn sẽ có sẵn đối tượng $email
làm tham số. Để lấy được đối tượng, bạn cần thực hiện thêm một bước. Sau đó thực hiện các thao tác tương tự như trên.
// :ấy đối tượng $order từ $email
$order = $email->object;
// Xử lý đơn hàng
if ( $order ) {
$order->get_id();
$order->get_formatted_order_total( );
// các dòng lệnh khác
}