Chaque fin d’année, c’est la même scène : le téléphone qui sonne non-stop, les commandes qui arrivent de partout, les marchés à préparer, les retraits en magasin à organiser…
Pour notre client poissonnier, les fêtes de fin d’année sont le moment le plus intense de l’année, mais aussi celui où l’organisation doit être millimétrée.
Son site e-commerce WooCommerce n’est pas ouvert en permanence : il est réactivé chaque année uniquement pour les fêtes. Pendant quelques semaines, les clients peuvent passer leurs commandes en ligne, choisir leur date de retrait et le lieu de collecte (marché, magasin, point de vente…), puis le site repasse en mode “silencieux” le reste de l’année.
La problématique : beaucoup de commandes, mais peu de visibilité
Au départ, le site permettait déjà de choisir une date de livraison grâce au plugin YITH WooCommerce Delivery Date. Les clients sélectionnaient simplement le jour où ils souhaitaient récupérer leur commande.
Mais côté organisation, ce n’était pas suffisant. Notre client avait besoin de 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 fournissent les données… mais pas la vue métier dont il avait besoin.
Il lui fallait un outil de préparation, pas juste une liste de commandes.
Notre réponse : un tableau de préparation par date et par point de retrait
C’est là que nous sommes intervenus. À partir des données déjà stockées par WooCommerce et YITH Delivery Date, nous avons développé un plugin WooCommerce sur mesure : Wycan Order Filter.
Concrètement, nous avons ajouté une nouvelle page dans l’admin WooCommerce : un écran dédié où le commerçant peut :
- sélectionner une date de livraison ;
- filtrer (ou non) par lieu de retrait (marché, boutique, etc.) ;
- obtenir automatiquement un récapitulatif des produits à préparer pour cette date et ce lieu.
Résultat : pour chaque combinaison date de retrait + point de vente, le plugin affiche :
- la liste des produits concernés ;
- le SKU et le type de produit (simple, variable, etc.) ;
- la quantité totale à préparer pour chaque article ;
- des statistiques globales (nombre de références, total d’articles à préparer, date sélectionnée, etc.).
En un coup d’œil, notre client sait donc exactement quoi préparer pour le 24, pour le 31, et pour chaque marché. La préparation des fêtes devient prévisible et structurée, au lieu d’être une succession de fichiers Excel bricolés à la main.
Un export CSV prêt pour le terrain
Pour aller plus loin, nous avons ajouté un bouton d’export CSV. En un clic, le poissonnier peut :
- exporter la liste des produits à préparer pour une date donnée ;
- l’ouvrir dans Excel, Google Sheets ou l’envoyer à son équipe ;
- l’utiliser comme checklist de préparation en laboratoire ou sur le point de vente.
On passe ainsi d’un simple site de commande en ligne à un véritable outil logistique adapté à son métier.
Ce que ça montre de notre façon de travailler
Ce cas client illustre bien notre approche :
- nous pouvons évidemment mettre en place une boutique en ligne “classique” avec WooCommerce ;
- mais nous sommes surtout capables d’aller beaucoup plus loin avec du développement sur mesure :
création de plugins WooCommerce spécifiques, interfaces dédiées, exports, automatisations, etc.
Votre activité ne ressemble pas à celle du voisin ? Votre e-commerce non plus ne devrait pas lui ressembler.
C’est exactement ce que permet le développement de plugins WooCommerce sur mesure : adapter l’outil à votre réalité terrain, et pas l’inverse.
Pour les plus techniques : comment fonctionne le plugin ?
Si vous aimez mettre le nez dans les entrailles de WordPress et WooCommerce, voici un aperçu de ce que fait le plugin Wycan Order Filter sous le capot.
1. S’appuyer sur YITH WooCommerce Delivery Date
Le plugin ne réinvente pas la roue : il s’appuie sur les données existantes du pluginYITH WooCommerce Delivery Date. Les informations clés sont stockées en métadonnées de commande :
ywcdd_order_delivery_date: la date de livraison / retrait choisie au checkout (formatY-m-d) ;ywcdd_order_carrier: le lieu de retrait (marché, magasin, etc.).
Notre plugin vient simplement lire et exploiter ces métas pour les transformer en vue métier exploitable.
2. Compatibilité HPOS et récupération des lieux de retrait
Pour récupérer la liste des lieux de retrait disponibles, nous utilisons une fonction utilitairewycan_get_available_carriers() qui s’adapte à la configuration du site :
- si HPOS (High Performance Order Storage) est activé, nous interrogeons la table
wc_orders_meta; - sinon, nous passons 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, nous récupérons les valeurs distinctes du méta ywcdd_order_carrier pour alimenter le sélecteur “Lieu de retrait” de la page d’admin.
3. Requête optimisée sur les commandes
Le cœur du plugin repose sur une fonction wycan_get_orders_by_delivery_date() qui s’appuie surWC_Order_Query pour récupérer les commandes pertinentes :
- tous les statuts de commande sont chargés, sauf
cancelled,failedetrefunded; - la requête filtre sur la date (
ywcdd_order_delivery_date) et, si fourni, sur le lieu (ywcdd_order_carrier) viameta_query; - le retour se fait sur les IDs uniquement (
'return' => 'ids') pour limiter la charge.
Une fois les IDs récupérés, la fonction parcourt chaque commande et chaque ligne de commande ($order->get_items()) pour construire une vue agrégée 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();
À la fin, on obtient un tableau avec :product_idskuproduct(nom du produit)type(simple, variation, etc.)quantity(somme des quantités pour ce produit à la date donnée)delivery_date
4. Interface d’admin dédiée dans WooCommerce
Dans l’administration, 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 datepicker jQuery UI (en français) pour choisir la date, un sélecteur pour le lieu de retrait, et affiche ensuite :
- des cartes de statistiques (nombre de références, quantité totale, date de livraison) ;
- un tableau responsive avec les produits et quantités ;
- un bouton d’export CSV connecté à un endpoint AJAX sécurisé (
wp_ajax_wycan_export_csv).
5. Export CSV via AJAX
L’export CSV est géré côté serveur par la méthode export_csv() de la classeWycan_Order_Filter_AJAX :
- vérification de sécurité via
check_ajax_referer(); - contrôle des permissions (
current_user_can( 'manage_woocommerce' )) ; - récupération des paramètres
dateetcarrierenPOST; - appel à
wycan_get_orders_by_delivery_date(); - écriture des données dans
php://outputavec les bons en-têtes HTTP pour forcer le téléchargement.
Et si on faisait la même chose pour votre activité ?
Dans ce projet, nous avons transformé un site WooCommerce saisonnier en un véritable outil opérationnel pour la préparation des commandes de fêtes, grâce à un plugin WooCommerce sur mesure.
Si vous aussi vous avez des besoins spécifiques (saisonnalité, multi-points de retrait, préparation par lot, reporting avancé…), nous pouvons concevoir et développer le plugin WooCommerce qui colle exactement à votre façon de travailler.