web-dev-qa-db-fra.com

Interrogez les commandes WooCommerce regroupées par plusieurs statuts de commande

Comme je peux le voir dans la documentation WooCommerce, WC_Order_Query Autorise un seul statut de commande à être transmis comme paramètre de requête. Quelqu'un at-il trouvé une solution de contournement pour permettre d'interroger plusieurs statuts de commande dans la même requête?

Supposons que je souhaite interroger les commandes dont le statut est "terminé" ET "remboursé".

Comment cela peut-il être fait via la classe WC_Order_Query Standard?

Exemple de doc:

// Get orders on hold.
$args = array(
    'status' => 'on-hold',
);

$orders = wc_get_orders( $args );

Lien vers wc_order_query() et WC_Order_Query Documentation WooCommerce

1
Aleksandar Mitic

La documentation sur wc_get_orders et WC_Order_Query est médiocre… En ce qui concerne le statut de la commande dans un WC_Order_Query, vous pouvez passer un tableau de statuts de commande :

// Display "completed" orders count
$statuses = ['completed'];
$orders = wc_get_orders( ['limit' => -1, 'status' => $statuses] );
echo '<p>' . sprintf( __('Count of "%s" orders: %s'), implode('", "', $statuses), count($orders) ) . '</p>';

// Display "refunded" orders count
$statuses = ['refunded'];
$orders = wc_get_orders( ['limit' => -1, 'status' => $statuses] );
echo '<p>' . sprintf( __('Count of "%s" orders: %s'), implode('", "', $statuses), count($orders) ) . '</p>';

// Display "completed" and "refunded"  orders count
$statuses = ['completed','refunded'];
$orders = wc_get_orders( ['limit' => -1, 'status' => $statuses] );
echo '<p>' . sprintf( __('Count of "%s" orders: %s'), implode('", "', $statuses), count($orders) ) . '</p>';

Testé et fonctionne.

3
LoicTheAztec

Au lieu de passer le paramètre 'status', vous pouvez utiliser le paramètre 'post_status' comme un tableau comme ceci:

// Get orders on hold and process
$args = array(
    'post_status' => array('wc-processing','on-hold')
);

$orders = wc_get_orders( $args );
0
Shehroz Ahmed