Créer un plugin WooCommerce : guide pour débuter
WooCommerce est extensible à l’infini grâce à WordPress et à ses hooks. Plutôt que de modifier le thème ou le cœur de l’extension, un plugin isole votre fonctionnalité dans un module autonome, propre et réutilisable. Voici comment créer un plugin WooCommerce en partant des bonnes fondations, sans tomber dans les pièges classiques du débutant.
Pourquoi un plugin plutôt qu’une surcharge de thème
On voit souvent du code métier collé dans le functions.php du thème. C’est une fausse bonne idée : tout disparaît au changement de thème, et le fichier devient vite illisible. Un plugin, à l’inverse, survit aux changements de thème, s’active et se désactive proprement, et sépare clairement votre logique métier de la présentation. C’est la seule approche maintenable dès que la fonctionnalité dépasse trois lignes.
L’ossature minimale d’un plugin
Un plugin WooCommerce, c’est un dossier dans wp-content/plugins contenant un fichier principal portant un en-tête de plugin reconnu par WordPress. Depuis WordPress 6.5, l’en-tête Requires Plugins permet même de déclarer WooCommerce comme dépendance.
<?php
/**
* Plugin Name: Mon Extension WooCommerce
* Description: Ajoute une fonctionnalité métier à la boutique.
* Version: 1.0.0
* Author: Votre nom
* Requires Plugins: woocommerce
*/
if ( ! defined( 'ABSPATH' ) ) {
exit; // Pas d'accès direct.
}
On vérifie ensuite que WooCommerce est bien actif avant de greffer la moindre logique, pour éviter une erreur fatale si l’extension est désactivée :
add_action( 'plugins_loaded', 'monext_bootstrap' );
function monext_bootstrap() {
if ( ! class_exists( 'WooCommerce' ) ) {
return; // WooCommerce inactif : on ne fait rien.
}
// Brancher ici vos hooks et votre logique métier.
}
Déclarer la compatibilité HPOS
Point souvent oublié mais devenu incontournable : WooCommerce stocke désormais les commandes dans des tables dédiées (HPOS, High-Performance Order Storage). Tout plugin sérieux doit déclarer sa compatibilité, sinon la boutique affiche un avertissement et peut désactiver le stockage performant.
add_action( 'before_woocommerce_init', function () {
if ( class_exists( \Automattic\WooCommerce\Utilities\FeaturesUtil::class ) ) {
\Automattic\WooCommerce\Utilities\FeaturesUtil::declare_compatibility(
'custom_order_tables', __FILE__, true
);
}
} );
Dans la foulée, n’accédez jamais aux commandes via les anciennes fonctions get_post_meta : passez par l’API CRUD (wc_get_order, $order->update_meta_data(), $order->save()), seule compatible HPOS.
Organiser le code quand le projet grandit
Pour un correctif d’une fonction, un seul fichier suffit. Dès que le périmètre s’étoffe, structurez : une classe principale en singleton, des classes par responsabilité (admin, front, API, intégrations) et un autoloader PSR-4 pour charger les classes à la demande. Cette organisation rend le code testable et permet à un autre développeur de le reprendre sans archéologie.
Actions et filtres : le moteur de l’extension
WordPress et WooCommerce reposent sur deux mécanismes : les actions (add_action) pour exécuter du code à un moment donné, et les filtres (add_filter) pour modifier une valeur avant son utilisation. Tout WooCommerce s’étend ainsi — du prix au tunnel de commande. On détaille les plus utiles dans les hooks et filtres WooCommerce essentiels.
Stocker les données de votre plugin
Trois options selon le besoin. Les options (get_option / update_option) conviennent aux réglages globaux. Les métadonnées de commande ou de produit (via l’API CRUD) attachent une information à un objet précis. Enfin, une table personnalisée s’impose pour de gros volumes ou des données relationnelles propres à votre métier. Choisir le bon support dès le départ évite de douloureuses migrations plus tard.
Gérer l’activation et la désinstallation
Un plugin propre nettoie derrière lui. Utilisez register_activation_hook pour créer vos tables ou options à l’installation, et un fichier uninstall.php pour tout supprimer à la désinstallation. Laisser des tables orphelines dans la base est une négligence courante qui alourdit les sites au fil des ans.
Bonnes pratiques
- Préfixez fonctions, classes et options pour éviter les conflits.
- Échappez et validez toutes les entrées et sorties (sécurité).
- Respectez les standards de code WordPress (WPCS).
- Testez la compatibilité à chaque mise à jour majeure de WooCommerce.
- Internationalisez les chaînes avec un text domain si le plugin doit être traduit.
Un plugin qui respecte ces règles, c’est un site stable, des mises à jour sereines et un code que n’importe quel développeur peut reprendre.
Besoin d’une fonctionnalité que les extensions du marché ne couvrent pas, ou de fiabiliser un plugin existant ? Découvrez mon offre de plugin WooCommerce sur mesure, ou l’ensemble de mes prestations de développeur WooCommerce freelance. Et gardez un œil sur les performances quand votre extension monte en charge.