DHL Express Commerce : Comment n'importer que les commandes avec une méthode de livraison DHL ?
Si vous utilisez l'extension ou la plateforme DHL Express Commerce pour gérer vos expéditions WooCommerce, vous avez certainement remarqué un comportement natif assez contraignant : l'API synchronise et importe l'intégralité des commandes au statut "En cours" (Processing), peu importe le mode de livraison choisi par le client (Point Relais, Retrait en magasin, Colissimo, etc.).
Résultat : votre tableau de bord DHL se retrouve pollué par des centaines de commandes que vous ne traiterez jamais via leur service.
Puisque les règles d'automatisation de DHL Express Commerce ne permettent pas de supprimer ou d'archiver automatiquement les commandes hors-DHL à l'import, la solution consiste à filtrer le flux de l'API REST directement à la source, sur votre site WooCommerce.
Voici le guide pas à pas et le code personnalisé pour résoudre ce problème définitivement.
Étape 1 : Créer une clé API WooCommerce dédiée à DHL
Pour des raisons de sécurité et pour permettre au code de fonctionner sans perturber vos autres outils (ERP, CRM, autres transporteurs), vous devez impérativement utiliser une clé API REST dédiée exclusivement à DHL.
- Dans votre tableau de bord WordPress, allez dans WooCommerce > Réglages > Onglet Avancé > REST API.
- Cliquez sur Ajouter une clé.
- Nommez-la explicitement (ex: "Intégration DHL Express Commerce"), attribuez-la à un utilisateur administrateur et définissez les permissions sur Lecture/Écriture.
- Copiez immédiatement la Clé client (qui commence par
ck_...). C'est cette Consumer Key qui va nous servir de signature pour identifier le robot de DHL. - Renseignez cette clé dans votre interface de configuration sur DHL Express Commerce (dans le menu Settings -> Integrations).
Étape 2 : Ajouter le snippet PHP de filtrage en amont
Ce script utilise le hook woocommerce_rest_orders_prepare_object_query. Lorsque DHL interroge l'API de votre site, le code intercepte la requête SQL, analyse toutes les commandes "En cours", et ne retourne à DHL que les identifiants des commandes dont la méthode d'expédition contient le mot-clé "DHL".
Ajoutez ce code dans le fichier functions.php de votre thème enfant ou via un plugin de gestion de snippets (comme WP Code ou Code Snippets) :
PHP
/* Filtrer proprement les commandes lues par DHL Express Commerce via la requête API */
add_filter('woocommerce_rest_orders_prepare_object_query', 'filtrer_requete_sql_api_dhl', 10, 2);
function filtrer_requete_sql_api_dhl($args, $request) {
// 1. Renseignez ici la clé API Consumer Key dédiée à DHL
$dhl_consumer_key = 'ck_votre_cle_api_ici_...';
// On vérifie de manière stricte si la requête provient de la clé API de DHL
if (isset($_SERVER['PHP_AUTH_USER']) && $_SERVER['PHP_AUTH_USER'] === $dhl_consumer_key) {
// 2. Récupérer toutes les commandes en cours (processing)
$orders = wc_get_orders(array(
'status' => 'processing',
'limit' => -1,
));
$order_ids_with_dhl = array();
// 3. Extraction des IDs dont la méthode d'expédition contient le terme "DHL"
foreach ($orders as $order) {
$shipping_methods = $order->get_shipping_methods();
foreach ($shipping_methods as $method) {
if (stripos($method->get_name(), 'DHL') !== false) {
$order_ids_with_dhl[] = $order->get_id();
break;
}
}
}
// 4. Application du filtre strict sur la réponse de l'API REST
if (!empty($order_ids_with_dhl)) {
$args['post__in'] = array_map('intval', $order_ids_with_dhl);
} else {
// Si aucune commande ne correspond, on force un tableau vide propre pour l'API
$args['post__in'] = array(0);
}
}
return $args;
}
Comment ça fonctionne ?
- Isolation complète : Le script détecte la variable
$_SERVER['PHP_AUTH_USER']. Si une autre clé API (comme celle de votre logiciel de facturation ou de gestion de stock) interroge le site, le script l'ignore et transmet toutes les commandes normalement. - Compatibilité HPOS : En utilisant la fonction native
wc_get_orders, le code reste parfaitement compatible avec les dernières versions de WooCommerce et l'activation du stockage haute performance des commandes (HPOS). - Nettoyage automatique : Lors de la prochaine synchronisation, seules les commandes contenant le mot "DHL" (ex: DHL Express, Livraison à domicile par DHL) apparaîtront dans l'onglet "New" de votre espace DHL.
Note : Les commandes hors-DHL déjà importées avant la mise en place du code devront être archivées manuellement une dernière fois.
Besoin d'aide pour configurer vos flux logistiques WooCommerce ?
La manipulation du fichier functions.php et des clés API requiert de la rigueur pour éviter de bloquer le tunnel de commande ou les autres connecteurs de votre boutique en ligne.
Vous préférez déléguer cette intégration en toute sécurité ? Je peux m'occuper de la configuration de vos modules de transporteurs et optimiser vos flux de commandes. Contactez-moi directement via le bouton flottant en bas à droite de votre écran pour m'expliquer votre besoin, et je reviendrai vers vous rapidement.










