2015-03-04 14 views
5

Sto provando a creare una funzione che recupera un ordine tramite il suo ID. Per qualche motivo non riesco a far funzionare la funzione globale WooCommerce get_order. Sto passando un ordine valido id alla funzione e sto provando a stamparlo per verificare che funzioni. La funzione è stata inserita nel mio file functions.php.WooCommerce - get_order() non funziona

function getWC_order_details($id){ 
    global $woocommerce; 

    $order = get_order($id); 

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

Ho testato l'eco di altri dati fuori dalla funzione senza problemi.

+0

E come avete usato questa funzione? Maggiori dettagli richiedono qui. –

+0

' ' – nickyb

+0

Benvenuto in Stack Overflow. Ho cercato di migliorare il testo della tua domanda per rendere più chiaro agli altri quale sia il problema che stai incontrando. Se puoi collegarti a qualsiasi documentazione per 'get_order', ciò potrebbe rendere più facile per chi non ha familiarità con WooCommerce rispondere alla tua domanda. –

risposta

14

Prima di tutto rendere funzione come questa:

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

Dopo di che, usalo con qualche woo_commerceazione o filtro.

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

Così, dopo l'aggiunta di qualsiasi prodotto al carrello, si vedrà dopo la tabella della spesa che c'è una vasta gamma contenente tutti i dettagli.

NOTA: È possibile utilizzare qualsiasi altra azione o filtro e li si può trovare here.

Modificato:

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

Grazie, la prima parte è ciò di cui avevo bisogno. Questa funzione non è per il carrello o per i clienti. Fa parte di una funzione più ampia su cui sto lavorando quando lo stato di un ordine cambia in elaborazione. Ho pensato che "WC_Order" includesse tutto ciò che riguarda l'ordine. Qualche idea su come ottenere i prodotti, il nome e alcuni dettagli di spedizione da un ID ordine? – nickyb

+0

Intendevi solo i prodotti che si trovano in quel particolare ordine ... giusto? –

+0

sì, solo le informazioni per quell'ordine particolare. – nickyb

0

provare questo.It potrebbe essere utile a voi.

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

Fonte: Nome file: woocommerce/include/api/classe-wc-api-orders.php

+0

Non ha funzionato, ma grazie per aver provato. L'ho provato in origine. '$ order = WC_API_Orders :: get_order ($ id, $ campi);' – nickyb

Problemi correlati