
Teilen Sie:
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.
Versandbenachrichtigungen auf WordPress WooCommerce Powered by Nexmo SMS
Lesedauer: 5 Minuten
Einführung
Das Kundenerlebnis nach einem Kauf spielt für jedes Unternehmen eine große Rolle bei der Kundenbindung. Im eCommerce gehören dazu auch rechtzeitige Benachrichtigungen, wenn sich der Bestellstatus des Nutzers ändert. Diese rechtzeitigen Benachrichtigungen über den Bestellstatus halten die Kunden bei Laune und verringern die Belastung durch Hin- und Hergespräche mit dem Kundendienst.
In diesem Tutorial werden wir eine einfache Integration zwischen WordPress WooCommerce und Nexmo SMS einrichten, um den Kunden (per SMS) zu benachrichtigen, wenn sich der Versandstatus seiner Bestellung ändert.
Am Ende dieses Tutorials wissen Sie, wie Sie ein WordPress-Plugin erstellen, wie WordPress-Aktionen funktionieren und wie Sie die Nexmo-API integrieren, um mit dem PHP-SDK von Nexmo SMS über WordPress zu versenden.
Fangen wir an!
Was Sie für den Einstieg brauchen:
Selbstgehostete WordPress-Website
WooCommerce Plugin installiert
Gliederung
Lassen Sie uns dieses Projekt in umsetzbare Schritte unterteilen und sie von oben nach unten durchführen:
Erstellen Sie Ihr WordPress-Plugin
Hinzufügen des Nexmo PHP SDK zum Plugin
Auf Änderungen des Bestellstatus in WooCommerce achten
Senden Sie eine SMS, wenn sich der Status der Bestellung ändert
Ihr WordPress-Plugin erstellen
Sie können zwar ein WordPress-Plugin erstellen, indem Sie einfach einen neuen Ordner im WordPress-Plugin-Ordner hinzufügen, aber eine effizientere Methode ist es, mit einer leichtgewichtigen Boilerplate zu beginnen. Boilerplates sind hilfreich, um alle Dateien und Klassen auf eine standardisierte Weise einzurichten. In diesem Tutorial werden wir den WordPress-Plugin-Boilerplate-Generator (wppb) Boilerplate; geben Sie einfach die Details auf der Website ein und klicken Sie auf die Schaltfläche Build Plugin, um Ihre Plugin-Boilerplate herunterzuladen.
boilerplate generator
Entpacken Sie anschließend die Zip-Datei und legen Sie sie in Ihrem WordPress-Plugin-Ordner ab. Gehen Sie dann zu Ihrem WordPress-Administrations-Dashboard, navigieren Sie zur Seite "Installierte Plugins" und klicken Sie auf die Schaltfläche "Aktivieren", um Ihr Plugin zu aktivieren:
WordPress installed plugins page
Hinzufügen der PHP-Bibliothek von Nexmo
Nexmo empfiehlt Ihnen die Installation der PHP-Bibliothek über den Composer zu installieren. Sie müssen also den Composer auf Ihrem Server/lokalen System eingerichtet haben. Wenn Sie Composer noch nicht eingerichtet haben, finden Sie hier zwei von Nexmo empfohlene Anleitungen, die Ihnen helfen: https://getcomposer.org/doc/00-intro.md oder https://scotch.io/tutorials/a-beginners-guide-to-composer
Wenn Composer installiert ist, öffnen Sie Ihr Terminal, navigieren Sie zum Ordner Ihres Plugins (er befindet sich normalerweise im Pfad: /your-wordpress-server-folder/wp-content/plugins/you-plugin-folder-name/ ) und führen Sie aus:
Es wird ein neuer Ordner namens vendor der eine Reihe anderer Bibliotheken enthält - darunter auch die PHP-Bibliothek von Nexmo. Um die Bibliothek in Ihr Plugin einzubinden, fügen Sie einfach diese Zeile in die PHP-Stammdatei Ihres Plugins ein:
require_once plugin_dir_path( __FILE__ ) . 'vendor/autoload.php'; Initialisierung der Nexmo-Klasse
Bevor Sie einen Aufruf mit der Nexmo-PHP-Bibliothek tätigen können, müssen Sie die Nexmo-Klasse initialisieren und das Client-Objekt verwenden, um Ihre nachfolgenden Anfragen zu stellen:
$basic = new \Nexmo\Client\Credentials\Basic(NEXMO_API_KEY, NEXMO_API_SECRET);
$client = new \Nexmo\Client(new \Nexmo\Client\Credentials\Container($basic));Ihren API-Schlüssel und Ihr Geheimnis finden Sie auf der Seite 'Erste SchritteSeite auf Ihrem Nexmo Dashboard.
Wenn Sie das Boilerplate verwenden, können Sie die folgenden Änderungen in der Datei öffentlichen Klassendatei in Ihrem Plugin /public Ordner. Wir werden die Nexmo-Bibliothek im Konstrukt initialisieren und das Client-Objekt als geschützte Eigenschaft festlegen, damit andere Methoden unserer öffentlichen Klasse darauf zugreifen können:
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));
}
Damit haben wir Nexmos Bibliothek zu unserem WordPress-Plugin hinzugefügt, und wir können auf alle bibliotheksbezogenen Funktionen mit der Eigenschaft class zugreifen $this->nexmo_client. Als Nächstes warten wir auf die Änderungen des Bestellstatus von WooCommerce und senden die SMS-Benachrichtigung.
Fibel zu WordPress-Aktionen
Die meisten Änderungen, die Sie in WordPress vornehmen werden, haben damit zu tun, dass Sie Ihre Funktionen mit bestehenden WordPress-Aktionen verknüpfen. Aktionen sind Funktionen, die ausgeführt werden, wenn ein bestimmtes Ereignis in WordPress eintritt. Wenn Sie möchten, dass Ihre Funktion ausgeführt wird, wenn ein bestimmtes Ereignis eintritt, z. B. wenn sich der Status einer Bestellung ändert, verknüpfen Sie Ihre Funktion mit der Aktion "Änderung des Bestellstatus".
Sie koppeln Ihre Funktion an eine bestehende Aktion wie diese:
add_action( 'action_name', 'name_of_your_function' ); Einbinden der WooCommerce-Bestellstatusänderung
Nun, da wir die WordPress-Aktionen verstehen, werden wir unsere Funktion, die die SMS sendet, mit dem WooCommerce-Ereignis für die Änderung des Bestellstatus verknüpfen, woocommerce_order_status_$STATUS_TRANSITION[to]. $STATUS_TRANSITION[to] ist die Statusänderung, auf die Sie hören möchten. Zum Beispiel, 'woocommerce_order_status_pending' löst unsere Funktion aus, wenn sich der Bestellstatus in "Pending" ändert.
Hier ein Codebeispiel, um dies zu verdeutlichen - die Standardstatus von WooCommerce sind ausstehend, fehlgeschlagen, in Wartestellung, in Bearbeitung, abgeschlossen, erstattet und storniert, und wenn wir für jeden dieser Status eine Funktion einrichten wollten, würde es so aussehen:
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');Um den obigen Code zu bereinigen, werden wir ihn auf nur 3 Codezeilen umstrukturieren:
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));
}
Als nächstes erstellen wir unsere send_customer_sms_notification Funktion, die die eigentliche SMS über Nexmo SMS versendet.
Versenden der SMS
Dieser Teil ist ziemlich einfach: Indem wir unsere Funktion an die WooCommerce-Bestellstatus-Aktion koppeln, erhalten wir die Bestell-ID, die wir verwenden können, um Details der Bestellung zu erhalten und die SMS zu senden.
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;
}
Wir verwenden die Bestell-ID, um das Bestellobjekt zu erhalten, indem wir die WooCommerce-Funktion wc_get_order()aufruft, und mit dem Auftragsobjekt erhalten wir den Status (das ist der neue Status, der gerade aktualisiert wurde) und die Handynummer des Kunden. Mit all diesen Informationen sind wir bereit, die SMS zu senden.
Wir verwenden das Schnipsel aus der Nexmo-Dokumentation für den Versand einer SMS. In unserem Fall wird jedoch die $client Variable die $nexmo_client Eigenschaft sein, die wir zuvor in unserem Konstruktor festgelegt haben:
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 );
}
Um die Sichtbarkeit der gesendeten Nachrichten zu gewährleisten, fügen wir mit der WooCommerce-Funktion eine Bestellnotiz zur Bestellung hinzu add_order_note(). Diese Notizen können über den Adminbereich eingesehen werden:
notes in admin
Um alles zu testen, geben Sie einfach eine Bestellung in Ihrem WooCommerce-Shop auf, gehen Sie in den Admin-Bereich und ändern Sie den Bestellstatus auf einen anderen Wert.
sms demo
Hier ist ein Link zur vollständigen öffentlichen Klassendatei.
Schlussfolgerung
In diesem Tutorial haben wir gelernt, wie man ein WordPress-Plugin erstellt, wie man die Nexmo-PHP-Bibliothek integriert und wie man die SMS API von Nexmo verwendet, um eine SMS zu senden, wenn sich der Status einer Bestellung in WooCommerce ändert.
Ich hoffe, Sie fanden dies sehr hilfreich - Sie können den vollständigen Code auf GitHub über diesen Link auschecken Link.
Vielen Dank fürs Lesen!