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
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.
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 );