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

<?php 
function monsite_woocommerce_payment_complete( $order_id ) {
  	
	// Récupérer la commande
	$order = wc_get_order( $order_ID );

	// Récupérer  le client
	$user_ID = $order->user_id;

	// Récupérer les produits achetés
	$items = $order->get_items();

	// Faites  ensuite ce que vous voulez ! 

	// Par exemple envoyer un email
	wp_mail($email, $subject, $message);

	// Ou encore ajouter des  metas données à votre client 
	add_user_meta( $user_ID, '_nom_meta', $datas_meta, true );
  
}
add_action( 'woocommerce_payment_complete', 'monsite_woocommerce_payment_complete' );

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 :

<?php 

function monsite_payment_failed() {
    // Votre code ici
}
add_action( ‘woocommerce_order_status_failed’, ‘monsite_payment_failed’);

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 136 jours

Article écrit par Maxime BJ

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

Organisateur de WPInAlps, le meetup WordPress Grenoblois. Vous pouvez me rencontrer lors d’événements tels que WordCamp Paris et Europe. Traducteur Français de l’extension Advanced Custom Fields. Également développeur d’applications web avec MeteorJs. Je m’occupe un site pour apprendre l’informatique aux débutants gratuitement.

J’aime les jeux vidéo, la rando, la bouffe bien grasse et les voyages.

2 Commentaires

Laisser un commentaire

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

661e58a8f3df8cb6e9bba8ae81a47d8a00000000000000000