Tout savoir sur WordPress

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.

 

Cet article a été mis à jour il y a 2739 jours - Il n'est peut être plus à jour !

Article écrit par Maxime BJ

Développeur, bloggeur et formateur Web spécialisé WordPress. 36 ans. Grenoblois. Co-fondateur de WPChef, l’organisme de formation WordPress.

Co-fondateur de WPChef, la formation WordPress pour les débutants. Vous pouvez me rencontrer lors d’événements tels que les WordCamp. Traducteur Français de l’extension Advanced Custom Fields. Je m’occupe un site pour apprendre l’informatique aux débutants gratuitement.

4 Commentaires

    • 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)