
Partager:
Douglas is a full stack software engineer with a keen interest to marketing, customer growth and data analytics. When he’s not coding, he’s probably watching way too many TV shows.
Notifications d'expédition sur WordPress WooCommerce Propulsé par Nexmo SMS
Temps de lecture : 6 minutes
Introduction
L'expérience du client après un achat joue un rôle important dans la fidélisation de l'utilisateur pour toute entreprise. Dans le domaine du commerce électronique, l'expérience post-achat comprend des notifications opportunes lorsque l'état de la commande de l'utilisateur change. Ces notifications en temps voulu permettent de satisfaire les clients et réduisent le fardeau des conversations avec le service à la clientèle.
Dans ce tutoriel, nous allons mettre en place une intégration simple entre WordPress WooCommerce et Nexmo SMS pour notifier le client (par SMS) lorsque le statut d'expédition de sa commande change.
A la fin de ce tutoriel, vous aurez une bonne compréhension de la création d'un plugin WordPress, du fonctionnement des Actions WordPress et de l'intégration de l'API Nexmo pour envoyer des SMS sur WordPress à l'aide du SDK PHP de Nexmo.
C'est parti !
Ce dont vous avez besoin pour commencer :
Site web WordPress auto-hébergé
WooCommerce plugin installé
Aperçu
Décomposons ce projet en étapes réalisables et mettons-les en œuvre de fond en comble :
Créez votre plugin WordPress
Ajouter le Nexmo PHP SDK au plugin
Écouter les changements de statut des commandes sur WooCommerce
Envoyer un SMS lorsque l'état de la commande change
Création de votre plugin WordPress
Bien que vous puissiez créer un plugin WordPress en ajoutant simplement un nouveau dossier dans le dossier WordPress plugins, une manière plus efficace est de commencer avec un boilerplate léger. Les boilerplates sont utiles pour configurer tous les fichiers et les classes de manière standard. Dans ce tutoriel, nous utiliserons le générateur de gabarit de plugin de générateur de gabarit de plugin WordPress (wppb) Il suffit de remplir les détails sur le site web, et de cliquer sur le bouton Build Plugin pour télécharger votre plugin boilerplate.
boilerplate generator
Une fois que vous l'avez, extrayez le fichier zip et placez-le dans votre dossier de plugins WordPress. Ensuite, allez dans votre tableau de bord d'administration WordPress, naviguez jusqu'à la page des plugins installés et cliquez sur le bouton Activer pour activer votre plugin :
WordPress installed plugins page
Ajout de la bibliothèque PHP de Nexmo
Nexmo vous recommande d'installer leur Bibliothèque PHP via Composer, vous devez donc avoir installé Composer sur votre serveur/système local. Si vous n'avez pas installé Composer, voici deux guides recommandés par Nexmo pour vous aider : https://getcomposer.org/doc/00-intro.md ou https://scotch.io/tutorials/a-beginners-guide-to-composer
Une fois Composer installé, ouvrez votre terminal, naviguez jusqu'au dossier de votre plugin (il se trouve généralement dans le chemin : /your-wordpress-server-folder/wp-content/plugins/you-plugin-folder-name/ ) et lancez :
Il créera un nouveau dossier appelé vendor qui contient un certain nombre d'autres bibliothèques, dont la bibliothèque PHP de Numbers. Pour inclure la bibliothèque dans votre plugin, ajoutez simplement cette ligne au fichier PHP racine de votre plugin :
require_once plugin_dir_path( __FILE__ ) . 'vendor/autoload.php'; Initialisation de la classe Nexmo
Avant de pouvoir effectuer un appel avec la bibliothèque PHP de Nexmo, vous devez initialiser la classe Nexmo et utiliser l'objet client pour effectuer vos requêtes ultérieures :
$basic = new \Nexmo\Client\Credentials\Basic(NEXMO_API_KEY, NEXMO_API_SECRET);
$client = new \Nexmo\Client(new \Nexmo\Client\Credentials\Container($basic));Votre clé API et votre code secret se trouvent sur la page d'accueil du site.Démarragesur votre tableau de bord Nexmo.
Si vous utilisez le modèle de base, vous pouvez effectuer les modifications suivantes dans le fichier fichier public Class dans le dossier /public de votre plugin. Nous allons initialiser la bibliothèque Nexmo dans la construction et définir l'objet client comme une propriété protégée afin que les autres méthodes de notre classe publique puissent y accéder :
class Nexmo_Wc_Sms_Order_Status_Notification_Public {
protected $nexmo_client;
public function __construct( $plugin_name, $version ) {
$this->plugin_name = $plugin_name;
$this->version = $version;
$this->nexmo_client = new Nexmo\Client(new Nexmo\Client\Credentials\Basic(WC_SMS_ORDER_NEXMO_KEY, WC_SMS_ORDER_NEXMO_SECRET));
}
Avec cette configuration, nous avons ajouté la bibliothèque Nexmo à notre plugin WordPress, et nous pouvons accéder à toutes les fonctions liées à la bibliothèque avec la propriété class $this->nexmo_client. Ensuite, nous allons écouter les changements de statut de la commande WooCommerce, et nous allons envoyer la notification par SMS.
Les actions WordPress en bref
La plupart des modifications que vous ferez sur WordPress consisteront à relier vos fonctions à des actions WordPress existantes. Les actions sont des fonctions exécutées lorsqu'un certain événement se produit dans WordPress. Si vous voulez que votre fonction s'exécute lorsqu'un événement spécifique se produit, par exemple lorsqu'une commande change d'état, vous devez connecter votre fonction à l'action de changement d'état de la commande.
Vous accrochez votre fonction à une action existante comme ceci :
add_action( 'action_name', 'name_of_your_function' ); Accrocher le changement de statut de la commande de WooCommerce
Maintenant que nous comprenons les actions WordPress, nous allons accrocher notre fonction qui envoie le SMS à l'événement de changement de statut de la commande de WooCommerce, woocommerce_order_status_$STATUS_TRANSITION[to]. $STATUS_TRANSITION[to] est le changement d'état que vous souhaitez écouter. Par exemple, 'woocommerce_order_status_pending' déclenche notre fonction lorsque le statut de la commande passe à "en attente".
Voici un exemple de code pour rendre cela plus clair - les statuts par défaut sur WooCommerce sont pending, failed, on-hold, processing, completed, refunded et canceled, et si nous voulions accrocher une fonction à chacun de ces statuts, cela ressemblerait à ceci :
add_action( 'woocommerce_order_status_pending', 'send_customer_sms_notification');
add_action( 'woocommerce_order_status_failed', 'send_customer_sms_notification');
add_action( 'woocommerce_order_status_on-hold', 'send_customer_sms_notification');
add_action( 'woocommerce_order_status_processing', 'send_customer_sms_notification');
add_action( 'woocommerce_order_status_completed', 'send_customer_sms_notification');
add_action( 'woocommerce_order_status_refunded', 'send_customer_sms_notification');
add_action( 'woocommerce_order_status_cancelled', 'send_customer_sms_notification');Pour nettoyer le code ci-dessus, nous allons le refactoriser en ne conservant que 3 lignes de code :
class Nexmo_Wc_Sms_Order_Status_Notification_Public {
protected $nexmo_client;
public function __construct( $plugin_name, $version ) {
$this->plugin_name = $plugin_name;
$this->version = $version;
foreach ( array( 'pending', 'failed', 'on-hold', 'processing', 'completed', 'refunded', 'cancelled' ) as $status ) {
add_action( 'woocommerce_order_status_'. $status, array( $this, 'send_customer_sms_notification' ) );
}
$this->nexmo_client = new Nexmo\Client(new Nexmo\Client\Credentials\Basic(WC_SMS_ORDER_NEXMO_KEY, WC_SMS_ORDER_NEXMO_SECRET));
}
Ensuite, nous allons créer notre fonction send_customer_sms_notification qui enverra le SMS via Nexmo SMS.
Envoi du SMS
Cette partie est assez simple : en accrochant notre fonction à l'action de statut de la commande de WooCommerce, nous obtenons l'identifiant de la commande, que nous pouvons utiliser pour obtenir les détails de la commande et envoyer le SMS.
public function send_customer_sms_notification( $order_id ) {
$order = wc_get_order( $order_id );
$order_status = $order->get_status();
$phone_number = method_exists( $order, 'get_billing_phone' ) ? $order->get_billing_phone() : $order->billing_phone;
}
A partir de ce qui précède, nous utilisons l'ID de la commande pour obtenir l'objet Commande en appelant la fonction WooCommerce wc_get_order()et avec l'objet Order, nous obtenons le statut (c'est le nouveau statut qui vient d'être mis à jour) et le numéro de téléphone mobile du client. Avec toutes ces informations, nous sommes prêts à envoyer le SMS.
Nous utiliserons le extrait de la documentation Nexmo pour envoyer un SMS. Cependant, dans notre cas, la variable $client sera la propriété $nexmo_client que nous avons définie dans notre constructeur plus tôt :
public function send_customer_sms_notification( $order_id ) {
$order = wc_get_order( $order_id );
$order_status = $order->get_status();
$phone_number = method_exists( $order, 'get_billing_phone' ) ? $order->get_billing_phone() : $order->billing_phone;
$message = "Your order #".$order_id." status has been updated to ".$order_status;
try {
$message = $this->nexmo_client->message()->send([
'to' => $phone_number,
'from' => WC_SMS_ORDER_NEXMO_SENDER_NAME,
'text' => $message
]);
$response = $message->getResponseData();
if($response['messages'][0]['status'] == 0) {
$order_note = "Customer notified on order status change to ".$order_status." via SMS (".$phone_number.")";
} else {
$order_note = "Unable to notify customer on order status change via SMS. Error:". $response['messages'][0]['status'];
}
} catch (Exception $e) {
$order_note = "Unable to notify customer on order status change via SMS. Error:". $e->getMessage();
}
$order->add_order_note( $order_note );
}
Pour la visibilité des messages envoyés, nous ajouterons également une note de commande à la commande avec la fonction WooCommerce add_order_note(). Ces notes sont visibles via l'admin :
notes in admin
Pour tout tester, il suffit de passer une commande sur votre boutique WooCommerce, de naviguer dans l'administration et de changer le statut de la commande en n'importe quoi d'autre, et vous devriez recevoir le SMS avec le nouveau statut.
sms demo
Voici un lien vers le dossier complet de la classe publique.
Conclusion
Dans ce tutoriel, nous avons appris les bases de la construction d'un plugin WordPress, comment intégrer la bibliothèque PHP Nexmo, et comment utiliser l'API SMS de Nexmo pour envoyer un SMS lorsqu'un statut de commande WooCommerce change.
J'espère que vous avez trouvé cela très utile - vous pouvez consulter le code complet sur GitHub via ce lien.
Merci de votre lecture !