2015-03-04 16 views
5

Tôi đang cố gắng tạo một hàm sẽ truy xuất một đơn đặt hàng theo ID của nó. Vì một lý do nào đó, tôi không thể sử dụng chức năng toàn cầu của WooCommerce get_order để hoạt động. Tôi đang chuyển một lệnh hợp lệ id đến chức năng và cố in nó ra để xác minh rằng nó đang hoạt động. Hàm đã được đặt trong tệp functions.php của tôi.WooCommerce - get_order() không hoạt động

function getWC_order_details($id){ 
    global $woocommerce; 

    $order = get_order($id); 

    print "<pre>"; 
    print_r($order); 
    print "</pre>"; 
} 

Tôi đã thử nghiệm lặp lại dữ liệu khác ngoài chức năng mà không gặp sự cố.

+0

Và làm thế nào bạn sử dụng chức năng đó? Chi tiết hơn yêu cầu ở đây .. –

+0

' ' – nickyb

+0

Chào mừng bạn đến với Stack Overflow. Tôi đã cố gắng cải thiện các từ ngữ trong câu hỏi của bạn để làm cho nó rõ ràng hơn cho những người khác những gì vấn đề bạn đang gặp phải là. Nếu bạn có thể liên kết đến bất kỳ tài liệu nào cho 'get_order', điều đó có thể giúp những người không quen thuộc với WooCommerce dễ dàng trả lời câu hỏi của bạn hơn. –

Trả lời

14

Trước hết thực hiện chức năng như thế này:

function getWC_order_details($order_id) { 
    $order = new WC_Order($order_id); 
    var_dump($order); 
} 

Sau đó, sử dụng nó với một số woo_commercehành động hoặc bộ lọc.

function use_after_cart_table(){ 
    getWC_order_details(40); 
} 
add_action('woocommerce_after_cart_table', 'use_after_cart_table'); 

Vì vậy, sau khi thêm bất kỳ sản phẩm vào giỏ hàng, bạn sẽ thấy sau khi bảng giỏ rằng có một mảng chứa tất cả các chi tiết.

LƯU Ý: Bạn có thể sử dụng bất kỳ hành động hoặc bộ lọc nào khác và bạn có thể tìm thấy chúng here.

EDITED:

function getWC_order_details($order_id) { 
    $order = new WC_Order($order_id); 
    //var_dump($order); 
    $order_shipping_total = $order->get_shipping(); 
    $order_shipping_method = $order->get_shipping_methods(); 
    var_dump($order_shipping_total);//Use it for debugging purpose or to see details in that array 
    var_dump($order_shipping_method);//Use it for debugging purpose or to see details in that array 

    $_order = $order->get_items(); //to get info about product 
    foreach($_order as $order_product_detail){ 
     //var_dump($order_product_detail); 
     echo "<b>Product ID:</b> ".$order_product_detail['product_id']."<br>"; 
     echo "<b>Product Name:</b> ".$order_product_detail['name']."<br><br>"; 
    } 
    //var_dump($_order); 
} 
+0

Cảm ơn phần đầu tiên là những gì tôi cần. Chức năng này không dành cho giỏ hàng hoặc khách hàng. Đó là một phần của chức năng lớn hơn mà tôi đang thực hiện khi trạng thái đơn đặt hàng thay đổi để xử lý. Tôi nghĩ "WC_Order" sẽ bao gồm mọi thứ về thứ tự. Bất kỳ ý tưởng làm thế nào để có được các sản phẩm, tên, và một số chi tiết vận chuyển từ một id đơn đặt hàng? – nickyb

+0

Bạn có nghĩa là các sản phẩm nằm trong thứ tự cụ thể đó ... đúng không? –

+0

có, chỉ có thông tin cho thứ tự cụ thể đó. – nickyb

0

hãy thử điều này. Nó có thể hữu ích cho bạn.

function getWC_order_details($id) 
{ 
$array = WC_API_Orders::get_order($id, $fields); 
print "<pre>"; 
print_r($order); 
print "</pre>"; 
} 

Nguồn: File name: woocommerce/includes/api/lớp-wc-api-orders.php

+0

Không hoạt động, nhưng cảm ơn bạn đã thử. Tôi đã cố gắng mà ban đầu. '$ order = WC_API_Orders :: get_order ($ id, $ fields);' – nickyb