Un client possédait déjà une boutique WooCommerce solide vendant du matériel électroménager reconditionné, quand une opportunité commerciale a changé la donne : deux partenaires souhaitaient distribuer le même catalogue sous leur propre marque, avec leur propre nom de domaine, leur propre charte graphique et des tarifs légèrement différents selon les accords commerciaux négociés avec chacun. Ce retour d’expérience détaille le passage d’une boutique unique vers une architecture marque blanche multi-enseignes, sans passer par une logique multi-vendeurs, qui aurait répondu à un besoin différent — plusieurs vendeurs sur un même site, plutôt qu’un même catalogue diffusé sous plusieurs identités.
La première option écartée : trois installations WooCommerce séparées
La solution la plus simple sur le papier — dupliquer l’installation WordPress trois fois, une par enseigne — a été écartée dès la phase de cadrage. Elle aurait imposé de synchroniser manuellement le stock et le catalogue entre trois bases de données distinctes, avec un risque de désynchronisation à chaque mise à jour produit, un problème identique à celui rencontré sur d’autres projets multi-entrepôts mal architecturés.
L’architecture retenue : un multisite avec un catalogue partagé

Le choix s’est porté sur une installation WordPress multisite, avec un site principal jouant le rôle de source de vérité pour le catalogue, et deux sites enfants représentant les enseignes partenaires. Le catalogue produit est répliqué techniquement (chaque site multisite dispose de ses propres tables), mais synchronisé automatiquement depuis le site principal via un connecteur maison déclenché à chaque sauvegarde de produit :
add_action( 'woocommerce_update_product', 'marque_blanche_propager_produit' );
add_action( 'woocommerce_new_product', 'marque_blanche_propager_produit' );
function marque_blanche_propager_produit( $product_id ) {
if ( get_current_blog_id() !== MARQUE_BLANCHE_SITE_SOURCE ) {
return;
}
$produit_source = wc_get_product( $product_id );
foreach ( array( MARQUE_BLANCHE_SITE_ENSEIGNE_A, MARQUE_BLANCHE_SITE_ENSEIGNE_B ) as $site_id ) {
switch_to_blog( $site_id );
marque_blanche_synchroniser_un_site( $produit_source );
restore_current_blog();
}
}
Appliquer une grille tarifaire propre à chaque enseigne
Le stock et les caractéristiques produit restent identiques d’une enseigne à l’autre, mais le prix affiché diffère selon l’accord commercial négocié avec chaque partenaire. Plutôt que de stocker un prix différent par site dès la synchronisation, le prix de base reste celui du catalogue source, et chaque site enfant applique sa propre majoration au moment de l’affichage, via le filtre woocommerce_product_get_price :
add_filter( 'woocommerce_product_get_price', function( $prix, $produit ) {
$majoration = get_option( 'marque_blanche_majoration_enseigne', 0 );
if ( $majoration > 0 ) {
$prix = (float) $prix * ( 1 + ( $majoration / 100 ) );
}
return $prix;
}, 10, 2 );
Cette approche centralise la logique de calcul et évite qu’une modification de tarification négociée avec un partenaire n’oblige à retoucher le catalogue produit lui-même.
Un thème par enseigne, une logique métier commune
Chaque site enfant du multisite active son propre thème, reflétant la charte graphique du partenaire concerné, tandis que le plugin de synchronisation et de tarification reste activé en réseau (Network Activate) et partagé par les trois sites. Cette séparation nette entre l’apparence, propre à chaque enseigne, et la logique métier, centralisée dans un plugin unique, a permis d’ajouter une troisième enseigne quelques mois plus tard sans quasiment aucun développement supplémentaire.
Ce qui s’est révélé plus délicat que prévu
- La gestion des commandes est restée séparée par site : chaque enseigne voit uniquement ses propres commandes, ce qui a nécessité un tableau de bord agrégé développé à part pour donner une vision consolidée au client final.
- Les avis produits, initialement partagés dans une première version du connecteur, ont dû être séparés par enseigne à la demande du client, chaque partenaire souhaitant afficher uniquement ses propres avis clients.
- La synchronisation des images, plus lourde que celle des données textuelles, a demandé une gestion spécifique via l’API multisite pour éviter de dupliquer physiquement chaque fichier sur les trois sites.
Une leçon retenue de ce projet : la séparation entre catalogue partagé et présentation propre à chaque enseigne doit être actée dès la phase de cadrage, avant tout développement. Revenir dessus après coup, une fois les enseignes déjà en ligne, coûte nettement plus cher que de la poser correctement au départ.
Retour d’expérience après plusieurs mois
Depuis la mise en ligne des deux premières enseignes partenaires, l’architecture multisite a démontré sa capacité à absorber l’ajout d’une troisième marque sans reconstruction majeure. Le principal point de vigilance reste la charge de maintenance : une mise à jour de plugin doit être testée sur les trois sites du réseau avant déploiement, une contrainte que le client n’avait pas pleinement anticipée au moment de valider cette architecture, mais qui reste largement compensée par l’absence de duplication du catalogue et du stock.