2013-08-12 13 views
11

Sto cercando di ottenere i dati associati a un ordine sul plugin woocommerce (wordpress). Attualmente, ho scritto il mio plugin che contiene il codice:Woocommerce - php per ottenere informazioni sull'ordine

<?php 
global $woocommerce; 
$order = new WC_Order($order_id); 
$order_shipping_total = $order->get_shipping(); 
echo $order_shipping_total; 
?> 

Questo è solo per testare fuori, io non credo che questo sia operaia ma quello che ho veramente bisogno è quello di ottenere un elenco degli ordini che hanno un determinato stato dell'ordine e quindi possono accedere ai campi (come il nome) per ogni ordine in questo elenco. Come procedo a fare questo? Inoltre, quali file devo includere per farlo funzionare? Il file class-wc-order()?

risposta

22

Recentemente ho lavorato per l'esportazione di dati di ordini in XML.

$args = array(
    'post_type' => 'shop_order', 
    'post_status' => 'publish', 
    'meta_key' => '_customer_user', 
    'posts_per_page' => '-1' 
); 
$my_query = new WP_Query($args); 

$customer_orders = $my_query->posts; 

foreach ($customer_orders as $customer_order) { 
$order = new WC_Order(); 

$order->populate($customer_order); 
$orderdata = (array) $order; 

// $orderdata Array will have Information. for e.g Shippin firstname, Lastname, Address ... and MUCH more.... Just enjoy! 
} 
+0

Questo è bello e funziona bene, ma voglio ottenere un campo di prodotto seco come l'email e l'ora dell'acquirente come posso mostrare solo l'e-mail e l'ora per l'ID prodotto specifico. grazie –

+0

Puoi dare un'occhiata qui Per favore ho usato il tuo codice ma voglio ottenere alcuni dettagli a seconda dell'id del prodotto [qui la domanda] (http://stackoverflow.com/questions/20787587/woocommerce-buyers-email -on-frontend) –

2

per filtrare ordini per un uso particolare cliente ulteriore argomento meta_value:

$user_id = get_current_user_id(); 
$args = array(
    'post_type' => 'shop_order', 
    'post_status' => 'publish', 
    'meta_key' => '_customer_user', 
    'meta_value' => $user_id, 
    'numberposts' => -1, // -1 for all orders 
    'posts_per_page' => '-1' 
); 
$my_query = new WP_Query($args); 

modo anche alternativa a ordini di carico per un determinato cliente:

$orders = get_posts(apply_filters('woocommerce_my_account_my_orders_query', array(
    'numberposts' => 1, // -1 for all orders 
    'meta_key' => '_customer_user', 
    'meta_value' => $user_id, 
    'post_type' => 'shop_order', 
    'post_status' => 'publish' 
))); 

Vedi anche here .

Problemi correlati