Développement

Introduction au Développement de Plugins pour WooCommerce

WooCommerce, en tant qu’extension de WordPress, est construit sur une architecture modulaire qui permet de créer des plugins personnalisés. Cela offre une grande flexibilité pour étendre les fonctionnalités de WooCommerce au-delà de ses capacités de base.

Chez Condorito, nous sommes spécialisés dans le développement de solutions WooCommerce sur mesure, permettant de repousser les limites des fonctionnalités e-commerce standard.
Que ce soit pour créer des types de produits uniques, des méthodes de paiement ou de livraison personnalisées adaptés aux besoins spécifiques de votre activité, nous avons l’expérience nécessaire pour vous accompagner. Dans cet article, nous vous expliquons comment créer un plugin pour WooCommerce, afin d’optimiser votre boutique en ligne et de maximiser son potentiel.

Création de Types de Produits Personnalisés

WooCommerce propose plusieurs types de produits par défaut (simples, variables, téléchargeables, etc.), mais vous pouvez avoir besoin de types de produits spécifiques pour répondre aux besoins uniques de votre boutique.

  1. Initialisation du plugin : Créez un fichier PHP dans votre répertoire de plugins avec les informations de base du plugin.
    /**
    * Plugin Name: Mon Produit Personnalisé
    * Description: Ajoute un type de produit personnalisé.
    * Version: 1.0 * Author: Condorito
    */
  2. Déclarer un nouveau type de produit : Utilisez le filtre woocommerce_product_type_selector pour ajouter votre produit à la sélection dans l’interface d’administration.
    add_filter('product_type_selector', 'ajouter_mon_produit_personnalise');
    
    function ajouter_mon_produit_personnalise($types){
        $types['mon_produit'] = __('Mon Produit', 'mon-plugin');
        return $types;
    }
    
  3. Créer une classe pour le nouveau type de produit : Vous devez créer une classe qui hérite de la classe WC_Product.
    class WC_Product_Mon_Produit extends WC_Product {
        public function __construct($product) {
            $this->product_type = 'mon_produit';
            parent::__construct($product);
        }
    }
    
  4. Sauvegarder les données personnalisées : Utilisez les hooks WooCommerce pour ajouter et sauvegarder les champs spécifiques à votre produit lors de l’édition dans l’admin.

    📊 Recevez gratuitement l'audit de votre site par mail :
    (SEO, Perfs, Sécurité)

    Développer des Méthodes de Paiement Personnalisées

    Si les options de paiement proposées par défaut (Stripe, PayPal, etc.) ne répondent pas à vos besoins, WooCommerce permet d’ajouter des passerelles de paiement personnalisées.

    1. Déclarer la passerelle : Utilisez le filtre woocommerce_payment_gateways.
      add_filter('woocommerce_payment_gateways', 'ajouter_ma_passerelle');
      
      function ajouter_ma_passerelle($methods) {
          $methods[] = 'WC_Gateway_Ma_Passerelle';
          return $methods;
      }
      
    2. Créer la classe de la passerelle : Créez une classe qui hérite de WC_Payment_Gateway.
      class WC_Gateway_Ma_Passerelle extends WC_Payment_Gateway {
          public function __construct() {
              $this->id = 'ma_passerelle';
              $this->method_title = 'Ma Passerelle Personnalisée';
              $this->method_description = 'Description de ma passerelle';
      
              // Champs de configuration
              $this->init_form_fields();
              $this->init_settings();
          }
      }
      
    3. Ajouter des paramètres de configuration : Incluez une page de configuration dans le back-office WooCommerce.
      public function init_form_fields() {
          $this->form_fields = array(
              'enabled' => array(
                  'title' => 'Activer/Désactiver',
                  'type' => 'checkbox',
                  'label' => 'Activer Ma Passerelle',
                  'default' => 'yes'
              ),
              'title' => array(
                  'title' => 'Titre',
                  'type' => 'text',
                  'description' => 'Le titre que l\'utilisateur verra lors du paiement',
                  'default' => 'Ma Passerelle Personnalisée',
                  'desc_tip' => true,
              ),
          );
      }
      
    4. Gérer le paiement : Implémentez la méthode process_payment().
      public function process_payment($order_id) {
          $order = wc_get_order($order_id);
      
          // Effectuer la demande à la passerelle de paiement ici...
      
          // Si le paiement est validé
          $order->payment_complete();
          return array(
              'result' => 'success',
              'redirect' => $this->get_return_url($order),
          );
      }
      

    Création de Méthodes d’Expédition Personnalisées

    WooCommerce offre des options de livraison basiques, mais vous pouvez développer vos propres méthodes d’expédition si votre boutique nécessite des règles ou des calculs spécifiques.

    1. Déclarer la méthode d’expédition : Utilisez le filtre woocommerce_shipping_methods.
      add_filter('woocommerce_shipping_methods', 'ajouter_ma_methode_expédition');
      
      function ajouter_ma_methode_expédition($methods) {
          $methods['ma_methode'] = 'WC_Ma_Methode_Expedition';
          return $methods;
      }
      
    2. Créer la classe de la méthode d’expédition : Créez une classe héritant de WC_Shipping_Method.
      class WC_Ma_Methode_Expedition extends WC_Shipping_Method {
          public function __construct() {
              $this->id = 'ma_methode';
              $this->method_title = 'Ma Méthode d\'Expédition';
              $this->init();
          }
      
          public function init() {
              $this->init_form_fields();
              $this->init_settings();
          }
      }
      
    3. Calculer les tarifs d’expédition : Implémentez la méthode calculate_shipping().
      public function calculate_shipping($package = array()) {
          $tarif = 10; // Exemple de tarif fixe
      
          $this->add_rate(array(
              'id' => $this->id,
              'label' => $this->title,
              'cost' => $tarif,
          ));
      }
      

     

    Bonus

    Si vous nous avez lu jusqu’ici, c’est que le sujet vous intéresse, ou qu’il est intéressant, comme vous voudrez.
    Pour vous remercier, on partage avec vous notre documentation maison, recensant les hooks woocommerce, illustré d’un code snippet pour son implémentation. Plus de 9000 pages. Oui, on n’est pas des rigolos.
    Moins indigeste, lisez aussi notre article sur les plugins enfants.

    Conclusion

    Le développement de plugins WooCommerce personnalisés demande non seulement des compétences techniques avancées, mais aussi une vision stratégique pour répondre aux exigences spécifiques de votre entreprise.
    Si vous cherchez un spécialiste WooCommerce proche de chez vous pour atteindre vos objectifs e-commerce, contactez-nous dès aujourd’hui. Ensemble, nous construirons la solution qui fera la différence pour votre activité.
    Nos études de cas sont là pour en témoigner.

    À propos de l'auteur

    Olivier Cotasson

    Développeur depuis plus de 20 ans, et spécialisé WordPress et WooCommerce , je travaille principalement avec des PME françaises qui ont besoin de solutions sur mesure et néanmoins abordables. Je suis également l'auteur du Manuel WooCommerce.
    Voir aussi la page A propos.

    8 commentaires

    1. Dev WooCommerce

      6 novembre 2024 at 15h57

      Des cas concrets ça aurait été sympa. Mais la base y est.

      Répondre
    2. E-Commerce Masters

      13 décembre 2024 at 21h50

      On développe des plugins WooCommerce custom pour nos clients. Cet article couvre bien les fondamentaux.

      Répondre
    3. Sara & Team

      14 avril 2025 at 20h36

      Bom artigo! Woocommerce é complexo, mas este post simplifica.

      Répondre
    4. Raj Kumar

      2 août 2025 at 14h55

      Clear and helpful. Bookmarked for future reference.

      Répondre
    5. Lucas Moretti

      13 août 2025 at 16h11

      WooCommerce plugins c’est un monde ! Merci pour la base solide.

      Répondre
      • condorito

        31 octobre 2025 at 9h27

        Bonjour Lucas,
        Regarde aussi dans le menu « ressources », les hooks WooCommerce.
        Une petite mine d’or si tu commences à te sentir à l’aise.

        Répondre
    6. la savionnerie

      18 février 2026 at 7h34

      Merci pour cet article !
      J’ai une question : pour les types de produits personnalisés, avez-vous une préférence entre étendre WC_Product directement ou passer par un plugin comme WooCommerce Product Add-Ons pour des besoins moins complexes ?
      La frontière entre « vaut mieux un plugin dédié » et « vaut mieux coder soi-même » n’est pas toujours évidente à trancher pour les clients.

      Répondre
      • Olivier Cotasson

        3 mars 2026 at 18h21

        Bonne question, et la réponse courte est : on code.
        Pour des cas simples comme une option « papier cadeau », un hook suffit largement et évite d’installer un plugin de plus.

        Evidemment, ce n’est pas à la portée du premier venu, mais c’est souvent préférable à un plugin « grand public » lourd, qu’il va falloir mettre à jour, ne couvre qu’une partie des besoin (et qu’il faudra sûrement payer).
        Par exemple, avec woocommerce_before_add_to_cart_button pour afficher la case à cocher, et woocommerce_add_cart_item_data pour passer l’option au panier :

        
        add_action('woocommerce_before_add_to_cart_button', function() {
            echo '<label><input type="checkbox" name="papier_kdo" value="1">
                  Ajouter un emballage cadeau</label>';
        });
        
        add_filter('woocommerce_add_cart_item_data', function($data) {
            if (!empty($_POST['papier_kdo'])) {
                $data['papier_cadeau'] = true;
            }
            return $data;
        });
        

        Pour les cas spécifiques aux règles métiers la réalisation d’un plugin custom se justifie encore plus.

        Consultez la documentation dédié aux hooks. 😉

        Répondre

    Laisser un commentaire

    Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *