Lancer une action après un achat WooCommerce grâce aux hooks
Les hooks de WordPress vous permettent de lancer des actions personnalisées à des moments clés. WooCommerce n’échappe pas à la règle et propose plusieurs hooks très utiles au moment de l’achat. Voyons ensemble quelques exemples.
Chez WPChef, dès qu’un nouvel étudiant vient de terminer le paiement, on prépare sa session d’apprenti. On a donc besoin de préparer des metas données liées à cet utilisateur :
- Date de début de session
- Quelle offre (perso ou pro)
- Tableau de progression des cours
En plus de cela, on lance la création d’un espace d’hébergement sur notre serveur d’exercices (pour ceux que ça intéresse, nous avons un dédié chez O2Switch controlé par des CPanel et un WHM, qui possède une API que l’on peut utiliser pour créer un hébergement).
Lancer une action après un paiement confirmé
Toutes ces actions doivent être faites après un achat complété. Voici donc le hook qu’il aura fallu utiliser dans notre code : woocommerce_payment_complete
[pastacode lang=”php” manual=”%3C%3Fphp%20%0Afunction%20monsite_woocommerce_payment_complete(%20%24order_id%20)%20%7B%0A%20%20%09%0A%09%2F%2F%20R%C3%A9cup%C3%A9rer%20la%20commande%0A%09%24order%20%3D%20wc_get_order(%20%24order_ID%20)%3B%0A%0A%09%2F%2F%20R%C3%A9cup%C3%A9rer%20%20le%20client%0A%09%24user_ID%20%3D%20%24order-%3Euser_id%3B%0A%0A%09%2F%2F%20R%C3%A9cup%C3%A9rer%20les%20produits%20achet%C3%A9s%0A%09%24items%20%3D%20%24order-%3Eget_items()%3B%0A%0A%09%2F%2F%20Faites%20%20ensuite%20ce%20que%20vous%20voulez%20!%20%0A%0A%09%2F%2F%20Par%20exemple%20envoyer%20un%20email%0A%09wp_mail(%24email%2C%20%24subject%2C%20%24message)%3B%0A%0A%09%2F%2F%20Ou%20encore%20ajouter%20des%20%20metas%20donn%C3%A9es%20%C3%A0%20votre%20client%20%0A%09add_user_meta(%20%24user_ID%2C%20’_nom_meta’%2C%20%24datas_meta%2C%20true%20)%3B%0A%20%20%0A%7D%0Aadd_action(%20’woocommerce_payment_complete’%2C%20’monsite_woocommerce_payment_complete’%20)%3B” message=”” highlight=”” provider=”manual”/]
On peut ensuite récupérer facilement la commande, le client et les produits achetés. Cela nous permet de définir s’ils ont souscrit à l’offre perso ou pro.
Une fois l’hébergement crée, on envoie un email à notre client avec toutes les informations (accès Cpanel, FTP…) grâce à la fonction wp_mail() .
Puis on ajoute les metas avec un simple add_user_meta().
Cela marche même pour les paiements en plusieurs fois, ou récurrents (comme c’est le cas pour nous). Mais du coup attention : il faut bien penser à vérifier l’existence des meta du client : si elles existent déjà c’est qu’on est pas au premier paiement, du coup on saute la partie “création d’un hébergement”.
Lancer des actions selon le statut de la commande
Il existe tout une série d’autres actions vous permettant d’avoir un contrôle plus fin sur l’état de la commande en cours, comme par exemple lorsque la commande est en attente, le paiement a échoué… Voici la liste des différentes actions sur les statuts de la commande :
- add_action( ‘woocommerce_order_status_pending’, ‘mysite_pending’);
- add_action( ‘woocommerce_order_status_failed’, ‘mysite_failed’);
- add_action( ‘woocommerce_order_status_on-hold’, ‘mysite_hold’);
- add_action( ‘woocommerce_order_status_processing’, ‘mysite_processing’);
- add_action( ‘woocommerce_order_status_completed’, ‘mysite_completed’);
- add_action( ‘woocommerce_order_status_refunded’, ‘mysite_refunded’);
- add_action( ‘woocommerce_order_status_cancelled’, ‘mysite_cancelled’);
Par exemple on pourrait ajouter une fonction lors d’une commande échouée qui propose des alternatives au client, et qui le relance. Car bien souvent un client avec paiement non abouti ne réessaiera pas son achat si on ne le motive pas un peu.
Exemple :
[pastacode lang=”php” manual=”%3C%3Fphp%20%0A%0Afunction%20monsite_payment_failed()%20%7B%0A%20%20%20%20%2F%2F%20Votre%20code%20ici%0A%7D%0Aadd_action(%20%E2%80%98woocommerce_order_status_failed%E2%80%99%2C%20%E2%80%98monsite_payment_failed%E2%80%99)%3B” message=”” highlight=”” provider=”manual”/]
Ce code est à placer soit dans le functions.php de votre thème actif (wp-content/themes/votre-theme/functions.php) soit dans le code d’un de vos plugins.
4 Commentaires
Excellent, merci pour cet article
Intéressant comme outils. Je pense que vos tutoriels me sont d’une très grande utilité. Merci pour les conseils.
Bonjour,
Merci, mais comment fait-on si on ne sait pas programmer et qu’on a fait tout son site avec le builder ?
Pourriez vous m’aider, s’il vous plait?
Cordialement.
Dans ce cas il n’y a que 2 solutions :
soit apprendre, soit se faire aider par un prestataire
En soit ce hook s’utilise dans ton thème enfant, et peut importe si ton thème a un page builder : celui-ci gère l’affichage. Mon hook permet de faire une action lors de l’achat (qui n’est pas visuelle)