Registrierungsbestätigung im WordPress Plugin MailPoet3 mehrsprachig
Als Registrierungsbestätigungsemail für Double-Opt-in bei MailPoet3 kann nur ein Betreff, ein Inhalt und nur eine Bestätigungsseite ausgewählt werden. D.h. wenn man die Registrierungsemail und Bestätigungsseite in mehreren Sprachen benötigt, ist das so direkt nicht möglich. Deshalb habe ich mir mit einem Plugin und zwei kleinen Änderungen am MailPoet-Plugin eine Lösung mit Filter-Hooks gebastelt. Benötigt wird außerdem die kostenlose Version von Polylang .
Folgendes ist zu tun:
1. Registrierungsbestätigung multilinugal eingeben
Bei MailPoet3 können für eine Double-Opt-in-Registrierungsbestätigung der Text für den E-Mail-Betreff, E-Mail-Inhalt und eine Bestätigungsseite angegeben werden:
- [bt-mailpoet lang=en][/bt-mailpoet]
Beispiel für einen dreisprachigen E-Mail-Betreff (englisch, deutsch und französisch):
[bt-mailpoet lang=en]Please confirm your newsletter registration[/bt-mailpoet][bt-mailpoet lang=de]Bitte bestätigen Sie Ihre Newsletter-Registrierung[/bt-mailpoet][bt-mailpoet lang=fr]Veuillez confirmer votre inscription à la newsletter[/bt-mailpoet]
Bei der Auswahl der Bestätigungsseite für die Newsletter-Registrierung in MailPoet ist es egal, welche Sprache die gewählte Bestätigungsseite hat. Wichtig ist, dass die Bestätigungsseiten in den unterschiedlichen Sprachen über Polylang entsprechend verknüpft sind:
2. Plugin bt-ml-mailpoet zum Filtern der enstprechenden Sprache
Damit beim Versenden der Registrierungs-EMail nur ein Text in der entsprechenden Sprache (z.B. deutscher Betreff und Inhalt, Aktivierungslink zur deutschen Bestätigungsseite) versendet wird, habe ich ein Plugin mit Filter-Hooks geschrieben.
Welche Sprache gefiltert wird, ermittle ich mit Polylang. Polylang gibt mit der Funktion pll_current_language() die aktuell im Browser aktivierte Sprache des Users zurück.
<?php /* Plugin Name: BT - MailPoet multilingual mit Polylang Description: MailPoet-Registrierungsformular multilingual mit Filter-Hooks und Polylang Author: B. Thölke Version: 1.0.0 Author URI: https://www.bt-webdesign.de/mailpoet-multilingual-mit-polylang/ */ /* * MailPoet -> Einstellungen -> Registrierungsbestätigung (MailPoet -> Settings -> Sign-up Confirmation) * Betreff der Mail (Email subject) und Inhalt der E-Mail (Email content) können gefiltert werden * Beispiel Betreff beinhaltet deutschen und englischen Text: * [bt-mailpoet lang=en]Confirm the newsletter registration[/bt-mailpoet][bt-mailpoet lang=de]Bitte bestätigen Sie Ihre Newsletter-Registrierung[/bt-mailpoet] * je nachdem welche Sprache aktiv ist (pll_current_language - Polylang) wird nur der englischen bzw. deutsche Text gefiltert (Subject und Body) * Apply Filter in /mailpoet/lib/Subscribers/ConfirmationEmailMailer.php */ function bt_ml_mailpoet_signup_lang($text) { $lang = pll_current_language(); // returns 2-letters code of the current language (slug) if ( $lang === false ) return $text; switch ($lang){ case 'de': // alle Sprachen, die genutzt werden case 'en': // case 'fr': // ... $beginn = '[bt-mailpoet lang='.$lang.']'; $ende = '[/bt-mailpoet]'; $pos = strpos($text, $beginn); if ( $pos !== false ) { $posende = strpos($text, $ende, $pos); if ( $posende !== false ) { $text = substr($text, $pos + strlen($beginn), $posende - $pos - strlen($beginn)); } } } return $text; } add_filter( 'bt_select_language', 'bt_ml_mailpoet_signup_lang', 10); /* * MailPoet -> Einstellungen -> Registrierungsbestätigung (MailPoet -> Settings -> Sign-up Confirmation): Bestätigungsseite (Confirmation Page) * Post-Id von aktiver Sprache zurückgeben (z.B. URL für Registrierungsbestätigung) * für jede Sprache muss die Bestätigungsseite (Confirmation Page) für die Registrierungsbestätigung angelegt und über Polylang verknüpft sein * Filter-Hook kann auch für andere URLs verwendet werden * Apply Filter in /mailpoet/lib/Subscription/SubscriptionUrlFactory.php */ function bt_ml_mailpoet_signup_lang_url($wp_post_id){ return pll_get_post($wp_post_id, pll_current_language()); } add_filter( 'bt_select_language_url', 'bt_ml_mailpoet_signup_lang_url', 10);
Die erste Funktion im Plugin (bt_ml_mailpoet_signup_lang) filtert aus Subject und Content der Mail den Text passend zu der im Browser des Users aktivierten Polylang-Sprache.
Wenn Sie außer deutsch und englisch noch weitere Sprachen benötigen, muß der entsprechende Sprachcode in der Funktion hinzugefügt werden. Der Sprachcode entspricht dem Slug von Polylang (z.B. fr für französisch).
Die zweite Funktion (bt_ml_mailpoet_signup_lang_url) setzt den Aktivierungslink in der Mail passend zur aktivierten Polylang-Sprache. Bei MailPoet3 kann nur eine Bestätigungsseite ausgewählt werden. Dabei ist es egal welche Sprache die bei MailPoet gewählte Bestätigungsseite hat. Wichtig ist nur, dass die Bestätigungsseiten in den unterschiedlichen Sprachen mit Polylang entsprechend verknüpft sind.
Download Plugin bt-ml-mailpoet.zip zum Subject- und Content-Filtern und setzen der Sign-up-URL mit der bei Polylang aktiven Sprache:
Installieren Sie das Plugin bt-ml-mailpoet in Ihrer WordPress-Seite und aktivieren sie das Plugin.
3. Filter-Hooks in MailPoet3 einbauen
Der erste Filter-Hook wird zweimal eingebaut zum Filtern des Betreffs (subject) und des Inhalts (body)
- $body = nl2br(apply_filters('bt_select_language',$signupConfirmation['body']));
- 'subject' => apply_filters('bt_select_language',$signupConfirmation['subject']),
in folgende Datei:
- /mailpoet/lib/Subscribers/ConfirmationEmailMailer.php
Der zweite Filter-Hook-Aufruf zur Auswahl der Bestätigungsseite in der gewünschten Sprache
- $post = $this->getPost(apply_filters('bt_select_language_url',$this->settings->get('subscription.pages.confirmation')));
wird in folgende Datei eingebaut:
- /mailpoet/lib/Subscription/SubscriptionUrlFactory.php
Wichtig: Nach einem Update vom MailPoet-Plugin müssen die Anpassungen von Punkt 3 (Filter-Hooks in MailPoet3 einbauen) wiederholt werden.
Anwendung
Nach Einrichtung der Registrierungsbestätigung (siehe oben 1.), erfolgreicher Installation und Aktivierung des Plugins bt-ml-mailpoet (siehe oben 2.) und den Änderungen am MailPoet-Plugin (siehe 3.) werden die Registrierungsmails aus dem Frontend automatisch für die im Browser aktivierten Sprache versendet.
Wichtig: Wenn die Registrierungsmail aus dem Backend vom Adminstrator versendet werden soll, muss im Backend die gewünschte Sprache ausgewählt sein:
Voraussetzungen:
Getestet mit folgenden MailPoet3-Versionen:
- ✓ 3.55.0
- ✓ 3.56.0
Hilfreiche Links
Sie haben Fragen zu dem Plugin bt-ml-mailpoet oder den Einbau der WordPress Filter-Hooks in das Plugin MailPoet?
Senden Sie mir Ihre Fragen, Wünsche und Anregungen an info@bt-webdesign.de.
Alle aufgeführten Firmen-, Markennamen und Warenzeichen sind Eigentum ihrer jeweiligen Inhaber.