2015-03-04 30 views
5

Próbuję utworzyć funkcję, która będzie pobierać zamówienia według jej identyfikatora. Z jakiegoś powodu nie mogę uruchomić funkcji globalnej WooCommerce get_order. Przekazuję ważne polecenie id do funkcji i próbuję wydrukować, aby sprawdzić, czy działa. Funkcja została umieszczona w moim pliku functions.php.WooCommerce - get_order() nie działa

function getWC_order_details($id){ 
    global $woocommerce; 

    $order = get_order($id); 

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

Przetestowałem echo innych danych z funkcji bez problemu.

+0

A jak używać tej funkcji? Więcej szczegółów wymaga tutaj. –

+0

' ' – nickyb

+0

Witamy w przepełnieniu stosu. Starałem się ulepszyć sformułowanie w Twoim pytaniu, aby wyjaśnić innym, na czym polega problem, z którym się spotykasz. Jeśli możesz połączyć się z dowolną dokumentacją dla 'get_order', to może ułatwić tym, którzy nie znają WooCommerce, odpowiedzi na twoje pytanie. –

Odpowiedz

14

Przede wszystkim uczynić funkcję tak:

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

Po tym, używaj go z niektórymi filtrami woo_commerce.

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

Więc po dodaniu jakiegokolwiek produktu do koszyka, widać po koszyka tabeli, która jest jedna tablica zawierający wszystkie szczegóły.

UWAGA: Możesz użyć dowolnej innej akcji lub filtra i możesz je znaleźć here.

edycja:

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

Dzięki pierwszej części jest to, czego potrzebowałem. Ta funkcja nie jest przeznaczona dla koszyka lub klientów. Jest to część większej funkcji, nad którą pracuję, gdy status zamówienia zmienia się na przetwarzanie. Myślałem, że "WC_Order" będzie zawierało wszystko, co dotyczy zamówienia. Masz pomysł, jak zdobyć produkty, nazwę i niektóre szczegóły wysyłki z identyfikatora zamówienia? – nickyb

+0

Masz na myśli produkty, które są w tej właśnie kolejności ... prawda? –

+0

tak, tylko informacje dotyczące tego konkretnego zamówienia. – nickyb

0

Spróbuj tego. Może ci się przydać.

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

Źródło: Nazwa pliku: woocommerce/includes/API/Class-WC-api-orders.php

+0

Nie działa, ale dzięki za próby. Próbowałem to pierwotnie. '$ order = WC_API_Orders :: get_order ($ id, $ fields);' – nickyb