Pour savoir quoi préparer chaque jour de retrait et pour chaque marché, notre client poissonnier n’avait qu’une liste de commandes. Nous avons développé un plugin WooCommerce sur mesure qui additionne les produits à préparer par date et par lieu de retrait, avec un export CSV pour l’équipe.
En bref
- Une boutique WooCommerce ouverte seulement pour les fêtes, où le client choisit sa date et son lieu de retrait.
- Le besoin : savoir combien préparer de chaque produit, par jour et par point de retrait.
- La réponse : une page dans l’administration de WooCommerce qui calcule les quantités à préparer.
- Un export CSV qui sert de liste de préparation au laboratoire ou sur le marché.
- Le plugin réutilise les données déjà enregistrées par YITH WooCommerce Delivery Date.
Chaque fin d’année, c’est la même scène : le téléphone qui sonne sans arrêt, les commandes qui arrivent de partout, les marchés à préparer, les retraits en magasin à organiser. Pour notre client poissonnier, les fêtes sont la période la plus intense de l’année, et celle où l’organisation doit être millimétrée.
Son site WooCommerce n’est pas ouvert toute l’année : il est réactivé uniquement pour les fêtes. Pendant quelques semaines, ses clients commandent en ligne, choisissent leur date de retrait et leur lieu de collecte (marché, magasin, point de vente), puis le site se met en veille le reste de l’année.
Le problème : beaucoup de commandes, peu de visibilité
Le site permettait déjà de choisir une date grâce à l’extension YITH WooCommerce Delivery Date. Mais pour organiser la préparation, ce n’était pas suffisant. Notre client devait répondre à des questions très concrètes :
- Combien de produits dois-je préparer pour le 24 décembre ?
- Combien de commandes sont prévues pour tel marché ou tel point de retrait ?
- Quelle quantité totale de chaque article dois-je commander à mes fournisseurs pour chaque jour clé ?
WooCommerce et YITH Delivery Date avaient toutes les données, mais pas la vue dont il avait besoin. Il lui fallait un outil de préparation, pas une liste de commandes.
Notre réponse : un tableau de préparation par date et par lieu de retrait
À partir des données déjà enregistrées par WooCommerce et YITH Delivery Date, nous avons développé un plugin WooCommerce sur mesure : Wycan Order Filter. Il ajoute une page dans l’administration de WooCommerce, où le commerçant :
- choisit une date de retrait ;
- filtre, s’il le souhaite, par lieu de retrait (marché, boutique…) ;
- obtient automatiquement le récapitulatif des produits à préparer pour cette date et ce lieu.
Pour chaque combinaison date et lieu de retrait, le plugin affiche :
- la liste des produits concernés ;
- la référence (SKU) et le type de produit (simple, variable…) ;
- la quantité totale à préparer pour chaque article ;
- des chiffres globaux : nombre de références, total d’articles à préparer, date choisie.
En un coup d’œil, notre client sait exactement quoi préparer pour le 24, pour le 31 et pour chaque marché. La préparation des fêtes devient prévisible et organisée, au lieu d’une succession de fichiers Excel bricolés à la main.
Un export CSV prêt pour le terrain
Un bouton Exporter en CSV complète l’outil. En un clic, le poissonnier peut :
- exporter la liste des produits à préparer pour une date donnée ;
- l’ouvrir dans Excel ou Google Sheets, ou l’envoyer à son équipe ;
- s’en servir comme liste de préparation au laboratoire ou sur le point de vente.
Le site de commande en ligne devient un vrai outil logistique, adapté à son métier.
Ce que ce projet montre de notre façon de travailler
Nous savons évidemment mettre en place une boutique WooCommerce classique. Mais nous allons souvent plus loin avec du développement sur mesure : plugins WooCommerce spécifiques, écrans dédiés, exports, automatisations.
Votre activité ne ressemble pas à celle du voisin ? Votre boutique en ligne non plus ne devrait pas lui ressembler. C’est exactement ce que permet un plugin sur mesure : adapter l’outil à votre réalité de terrain, et pas l’inverse.
Pour les plus techniques : comment fonctionne le plugin
Si vous aimez regarder sous le capot de WordPress et WooCommerce, voici ce que fait Wycan Order Filter.
1. S’appuyer sur YITH WooCommerce Delivery Date
Le plugin ne réinvente pas la roue : il lit les données déjà enregistrées par YITH WooCommerce Delivery Date, stockées en métadonnées de commande :
ywcdd_order_delivery_date: la date de retrait choisie à la commande (format Y-m-d) ;ywcdd_order_carrier: le lieu de retrait (marché, magasin…).
Notre plugin exploite ces métadonnées pour en faire une vue utile au métier.
2. Compatibilité HPOS et liste des lieux de retrait
Pour récupérer les lieux de retrait disponibles, une fonction wycan_get_available_carriers() s’adapte à la configuration du site :
- si le stockage HPOS (High Performance Order Storage) est activé, elle interroge la table
wc_orders_meta; - sinon, elle passe par la table classique
wp_postmeta.
function wycan_is_hpos_enabled() {
return class_exists( 'Automattic\WooCommerce\Utilities\OrderUtil' )
&& \Automattic\WooCommerce\Utilities\OrderUtil::custom_orders_table_usage_is_enabled();
} Dans les deux cas, elle récupère les valeurs distinctes de ywcdd_order_carrier pour remplir le menu « Lieu de retrait » de la page.
3. Une requête optimisée sur les commandes
Le cœur du plugin est la fonction wycan_get_orders_by_delivery_date(), qui utilise WC_Order_Query :
- tous les statuts de commande sont pris en compte, sauf
cancelled,failedetrefunded; - la requête filtre sur la date (
ywcdd_order_delivery_date) et, si besoin, sur le lieu (ywcdd_order_carrier) viameta_query; - elle ne renvoie que les identifiants (
'return' => 'ids') pour limiter la charge.
La fonction parcourt ensuite chaque commande et chaque ligne ($order->get_items()) pour additionner les quantités par produit :
// Création d'une clé unique par produit
$sku = $product->get_sku();
$key = $product_id . '_' . $sku;
// Agrégation des quantités
$products[ $key ]['quantities'][] = $item->get_quantity(); On obtient un tableau avec, pour chaque produit : product_id, sku, product (le nom), type (simple, variation…), quantity (la somme pour la date choisie) et delivery_date.
4. Une page dédiée dans l’administration de WooCommerce
Le plugin ajoute un sous-menu dans WooCommerce :
add_submenu_page(
'woocommerce',
__( 'Filtre de Commandes', 'wycan-order-filter' ),
__( 'Filtre de Commandes', 'wycan-order-filter' ),
'manage_woocommerce',
'wycan-order-filter',
array( $this, 'render_page' )
); La page utilise un calendrier jQuery UI en français pour choisir la date, un menu pour le lieu de retrait, puis affiche :
- des cartes de chiffres clés (nombre de références, quantité totale, date de retrait) ;
- un tableau adapté au mobile avec les produits et les quantités ;
- un bouton d’export CSV relié à un point d’accès AJAX sécurisé (
wp_ajax_wycan_export_csv).
5. L’export CSV en AJAX
L’export est géré côté serveur par la méthode export_csv() de la classe Wycan_Order_Filter_AJAX :
- vérification de sécurité avec
check_ajax_referer(); - contrôle des droits (
current_user_can( 'manage_woocommerce' )) ; - récupération des paramètres
dateetcarrierenvoyés en POST ; - appel à
wycan_get_orders_by_delivery_date(); - écriture des données dans
php://output, avec les en-têtes HTTP qui déclenchent le téléchargement.
Et si on faisait la même chose pour votre activité ?
Ici, un site WooCommerce saisonnier est devenu un vrai outil de travail pour préparer les commandes des fêtes, grâce à un plugin développé pour ce besoin précis.
Vous aussi, vous avez un besoin particulier : saisonnalité, plusieurs points de retrait, préparation par lot, tableaux de suivi ? Nous pouvons concevoir le plugin qui colle à votre façon de travailler.
Découvrir nos plugins sur mesure ou nous parler de votre besoin