web-dev-qa-db-fra.com

Woocommerce - php pour obtenir des informations sur les commandes

J'essaie d'obtenir les données associées à une commande sur le plugin woocommerce (wordpress). Actuellement, j'ai écrit mon propre plugin qui contient le code:

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

C’est juste pour le tester, je ne crois pas que cela fonctionne - MAIS, ce dont j’ai besoin, c’est d’obtenir une liste des commandes qui ont un certain statut, puis de pouvoir accéder aux champs (comme le prénom). pour chaque commande dans cette liste. Comment puis-je faire cela? De plus, quels fichiers dois-je inclure pour que cela fonctionne? Le fichier class-wc-order ()?

11
user2189190

Récemment, j'ai travaillé pour l'exportation de données de commandes en 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!
}
22
Denish

Pour filtrer les commandes d'un client particulier, utilisez l'argument supplémentaire 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);

Autre manière alternative de charger des commandes pour un client particulier:

$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'
) ) );

Voir aussi ici .

2
lubosdz