Module 1 · 1.2
Français
Comment fonctionne WooCommerce
Module 1: Avant de commencer · Temps de lecture : 10 minutes
Objectif pédagogique : À l’issue de cette leçon, vous saurez expliquer comment WooCommerce fonctionne dans WordPress et où se trouvent les produits, les commandes, le panier et les tâches planifiées.
Notions clés : type de produit, type de publication product, commandes (HPOS), pages de la boutique, session et panier, Store API, REST API, Action Scheduler, e-mails transactionnels, extensions
Une extension qui transforme votre site en boutique
Dans la formation WordPress (leçons 1.2 et 1.3), vous avez vu comment une page est générée : le serveur web transmet la requête à PHP, PHP charge WordPress, les extensions et le thème, récupère les données dans la base de données et en fait du HTML. WooCommerce s’insère dans ce processus sous la forme d’une grande extension. Il apporte quatre choses :
- Des données : produits, commandes, clients, taux de taxe, zones d’expédition.
- Des pages : la boutique, le panier, la validation de commande et Mon compte.
- Des processus : un panier par visiteur, des paiements via un prestataire de paiement, des e-mails, la mise à jour du stock, des tâches planifiées.
- Des points d’accès pour les programmes : la Store API et la REST API.
Si vous savez où se trouvent ces éléments, vous trouverez une erreur beaucoup plus vite par la suite. C’est pourquoi nous les examinons maintenant un par un.
Les produits : un type de publication à part
WordPress connaît des types de publication : les pages et les articles en sont deux exemples (formation WordPress, leçon 4.2). WooCommerce ajoute le type de publication product. Un produit se trouve donc, comme une page, dans la table des publications, avec ses données supplémentaires (prix, UGS, stock, poids) sous forme de métadonnées. Les catégories et étiquettes de produits sont des taxonomies distinctes, séparées de celles de votre blog.
Chaque produit a un type de produit. De base, ce sont les produits simple, groupé, externe (un lien vers une autre boutique) et variable. Vous pouvez y ajouter les cases virtuel (rien à expédier) et téléchargeable (un fichier après paiement). Un produit variable a des variations, comme une théière en trois couleurs ; chaque variation est un élément à part, avec son propre prix et son propre stock. Le module 3 approfondit ce sujet.
Les commandes : des tables dédiées (HPOS)
Auparavant, WooCommerce enregistrait aussi les commandes comme des publications. Pour les boutiques très actives, cela devenait lent, car les commandes et les articles de blog partageaient la même grande table. D’où l’arrivée de HPOS (High-Performance Order Storage) : les commandes dans des tables dédiées, comme wc_orders, wc_order_addresses et wc_orders_meta (précédées du préfixe de table de votre site). Depuis WooCommerce 8.2 (octobre 2023), HPOS est activé pour chaque nouvelle installation. Une boutique plus ancienne conserve l’ancien stockage jusqu’à ce que vous basculiez vous-même dans WooCommerce > Réglages > Avancé > Fonctionnalités.
Pourquoi devez-vous le savoir ? Pour trois raisons :
- Sauvegardes : les commandes ne se trouvent pas dans vos fichiers mais dans la base de données. Une sauvegarde sans base de données n’a aucune valeur pour une boutique (leçon 6.2).
- Extensions : une extension plus ancienne qui lit encore les commandes comme des publications ne fonctionne pas correctement avec HPOS. WooCommerce affiche un avertissement à côté de l’extension si elle n’est pas compatible.
- Restauration : si vous restaurez une sauvegarde d’hier, les commandes d’aujourd’hui disparaissent. Pour une boutique, c’est bien plus grave que pour un blog (leçon 6.2).
Le panier : différent pour chaque visiteur
Une page ordinaire est identique pour tous les visiteurs. Le panier, non. Dès qu’un visiteur ajoute quelque chose au panier, WooCommerce démarre une session : un cookie (wp_woocommerce_session_ suivi d’un code) dans le navigateur et une ligne dans une table de sessions de la base de données. Ainsi, lors de la requête suivante, la boutique sait quel panier appartient à ce visiteur.
Deux conséquences que vous retrouverez plus tard :
- Le panier, la validation de commande et Mon compte ne doivent jamais se retrouver dans un cache de pages, sinon un visiteur verrait le panier d’un autre. WooCommerce envoie lui-même sur ces pages des en-têtes qui interdisent la mise en cache (leçon 6.4).
- Une boutique qui démarre une session pour chaque visiteur, même sans panier, rend inutile le cache de pages de tout le site. C’est une erreur fréquente des thèmes et des extensions.
Les pages de la boutique et les blocs
Lors de l’installation, WooCommerce crée quatre pages : Boutique, Panier, Validation de commande et Mon compte. Depuis la version 8.3 (novembre 2023), les nouvelles installations utilisent des blocs pour le panier et la validation de commande ; les boutiques plus anciennes utilisent souvent encore des shortcodes. Les deux fonctionnent. La différence compte pour les extensions : une extension qui ajoute quelque chose à la validation de commande doit prendre en charge la variante que vous utilisez. La leçon 2.2 montre comment le vérifier.
Deux points d’accès pour les programmes : Store API et REST API
WooCommerce dispose de deux points d’accès programmables, et la différence est importante pour la sécurité :
| Store API | REST API | |
|---|---|---|
| Adresse | /wp-json/wc/store/v1/... | /wp-json/wc/v3/... |
| Pour qui | La boutique elle-même (les blocs dans le navigateur) et d’autres vitrines | Les connexions : comptabilité, stock, applications |
| Clé nécessaire ? | Non, publique : tout le monde peut lire les produits et les prix | Oui, une clé de l’API avec des droits de lecture ou d’écriture |
| Contenu | Produits, prix, état du stock, le panier du visiteur actuel | Aussi les commandes, les clients, les rapports |
Le fait que la Store API soit publique n’est pas une fuite : c’est exactement ce que chaque visiteur voit dans la boutique, simplement sous une forme lisible par des programmes. Essayez avec votre propre boutique : ouvrez https://shop.example.com/wp-json/wc/store/v1/products dans votre navigateur (avec votre propre adresse) et vous verrez vos produits au format JSON. La REST API, en revanche, doit rester fermée sans clé. La leçon 2.4 contrôle les deux.
En coulisses : Action Scheduler et e-mails
Une grande partie du travail d’une boutique ne se fait pas pendant que le client attend, mais plus tard. WooCommerce utilise pour cela l’Action Scheduler : une file d’attente de tâches planifiées, comme l’annulation d’une commande impayée après le délai défini, l’envoi de webhooks ou la mise à jour des rapports. Vous voyez cette file dans WooCommerce > État > Actions planifiées. Ces tâches s’exécutent via WP-Cron, qui ne tourne que lorsqu’il y a des visiteurs. Dans une boutique peu fréquentée, du travail peut alors rester en attente ; la leçon 7.3 montre comment un vrai cron résout ce problème.
WooCommerce envoie en outre des e-mails transactionnels : un e-mail pour vous à chaque nouvelle commande, et des e-mails au client lors de la réception, de l’expédition, d’un remboursement ou de la création d’un compte. S’ils n’arrivent pas, le client pense que quelque chose ne va pas. La leçon 6.1 traite de la délivrabilité.
En pratique : voici à quoi cela ressemble dans WooCommerce
Dans l’administration WordPress de Theehuis Example, trois nouveaux menus apparaissent après l’installation : WooCommerce (commandes, clients, réglages, état), Produits et Statistiques et mesures d’audience (dans les versions récentes, parfois sous WooCommerce). Dans WooCommerce > État, vous trouvez l’environnement serveur, les tables de la base de données, les actions planifiées et les journaux. Vous aurez souvent besoin de cet écran. Les étapes sont les mêmes chez tous les hébergeurs, car elles se trouvent dans WordPress lui-même.
Résumé
- WooCommerce apporte des données, des pages, des processus et deux points d’accès programmables.
- Les produits sont un type de publication à part ; dans les nouvelles boutiques, les commandes se trouvent dans des tables dédiées (HPOS, par défaut depuis 8.2).
- Le panier fonctionne avec une session par visiteur ; c’est pourquoi le panier, la validation de commande et Mon compte ne doivent pas être mis en cache.
- La Store API est publique et montre ce que voit chaque visiteur ; la REST API doit rester fermée sans clé.
- Les tâches planifiées passent par l’Action Scheduler et WP-Cron ; les e-mails font partie du processus de commande.
Quiz
Exercice
Exercice A1.2 : Ce site fonctionne-t-il avec WooCommerce ? Saisissez un domaine, choisissez oui ou non, et notez la preuve que vous avez vue (par exemple « generator » ou « wc/store/v1 »). Le programme récupère la page d’accueil, lit l’index REST (/wp-json/, uniquement la liste des namespaces) et interroge /wp-json/wc/store/v1/products?per_page=1. Il reconnaît WooCommerce à une balise meta generator contenant WooCommerce, au namespace wc/store/v1 dans l’index REST, à une Store API qui fonctionne, à des fichiers provenant de /wp-content/plugins/woocommerce/ ou à la classe body woocommerce. Vert : votre choix est correct et votre preuve figure dans les en-têtes, le HTML, l’index REST ou la réponse de la Store API ; vous voyez alors aussi le nombre de produits et la devise. Orange : votre choix est correct, mais nous ne retrouvons pas votre preuve. Rouge : votre choix n’est pas correct. Essayez d’abord sur votre propre boutique, puis sur une boutique que vous connaissez. Rien n’est ajouté à un panier et rien n’est envoyé.
Pour aller plus loin
Lorsque des étapes se déroulent dans un panneau, elles s’appliquent à WebOké ; chez d’autres prestataires, le fonctionnement est comparable.
- Formation WordPress gratuite 1.2: Sous le capot : serveur web, PHP et base de données
- Formation WordPress gratuite 1.3: Fichiers, wp-config et la base de données
- Formation WordPress gratuite 4.2: Pages, articles, catégories et étiquettes
- High-Performance Order Storage (developer.woocommerce.com, en anglais) : https://developer.woocommerce.com/docs/features/orders/high-performance-order-storage/
- Store API (developer.woocommerce.com, en anglais) : https://developer.woocommerce.com/docs/apis/store-api/
- Action Scheduler (en anglais) : https://actionscheduler.org/
