Für personalisierte Newsletter soll MailPoet abhängig von der gewählten Anrede und der gewünschten Ansprache automatisch eine passende Begrüßung erzeugen.
Dabei werden zwei Newsletter-Listen verwendet:
- Liste für „Du“
- Liste für „Sie“
Zusätzlich gibt es ein eigenes MailPoet-Custom-Field „Anrede“ mit den Werten:
- Herr
- Frau
- Divers
Der Vorname ist Pflichtfeld, der Nachname bleibt optional.
Verwendete Shortcodes
Folgende eigenen Shortcodes stehen zur Verfügung:
[custom:firstname_capitalized]
[custom:lastname_capitalized]
[custom:anrede_du]
[custom:anrede_sie]Die beiden ersten Shortcodes korrigieren die Groß-/Kleinschreibung von Vor- und Nachnamen.
Das ist praktisch, weil viele Abonnenten ihren Namen bei der Anmeldung komplett klein schreiben.
MailPoet Custom Field prüfen
Das Feld „Anrede“ wird intern von MailPoet als Custom Field gespeichert.
Im konkreten Projekt lautet die Feld-ID:
cf_1Im Frontend sieht das Feld beispielsweise so aus:
<input
type="radio"
name="data[cf_1]"
value="Herr"
>Wichtig: Die ID cf_1 ist projektspezifisch.
Bei anderen Installationen kann das Feld beispielsweise cf_2, cf_4 usw. heißen.
Die ID daher immer im Formular per Browser-Inspector prüfen.
PHP-Code
<?php
add_filter( 'mailpoet_newsletter_shortcode', function(
$shortcode,
$newsletter,
$subscriber,
$queue,
$newsletter_body,
$arguments
) {
/*
* Vorname mit korrekter Groß-/Kleinschreibung
*/
if ( $shortcode === '[custom:firstname_capitalized]' ) {
$name = trim( $subscriber->getFirstName() );
return $name !== ''
? mb_convert_case( $name, MB_CASE_TITLE, 'UTF-8' )
: '';
}
/*
* Nachname mit korrekter Groß-/Kleinschreibung
*/
if ( $shortcode === '[custom:lastname_capitalized]' ) {
$name = trim( $subscriber->getLastName() );
return $name !== ''
? mb_convert_case( $name, MB_CASE_TITLE, 'UTF-8' )
: '';
}
/*
* Persönliche Anrede:
*
* [custom:anrede_du]
* [custom:anrede_sie]
*/
if (
$shortcode === '[custom:anrede_du]' ||
$shortcode === '[custom:anrede_sie]'
) {
/*
* Namen holen und vereinheitlichen
*/
$firstname = trim( $subscriber->getFirstName() );
$lastname = trim( $subscriber->getLastName() );
if ( $firstname !== '' ) {
$firstname = mb_convert_case(
$firstname,
MB_CASE_TITLE,
'UTF-8'
);
}
if ( $lastname !== '' ) {
$lastname = mb_convert_case(
$lastname,
MB_CASE_TITLE,
'UTF-8'
);
}
/*
* MailPoet-Custom-Field "Anrede" holen
*
* cf_1 = Herr / Frau / Divers
*
* WICHTIG:
* cf_1 ist projektspezifisch und muss
* bei anderen Installationen geprüft werden.
*/
$gender = '';
try {
$mailpoet = \MailPoet\API\API::MP('v1');
$data = $mailpoet->getSubscriber(
$subscriber->getEmail()
);
if ( ! empty( $data['cf_1'] ) ) {
$gender = trim( $data['cf_1'] );
}
} catch ( \Exception $e ) {
/*
* Falls MailPoet das Custom Field nicht liefern kann,
* bleibt $gender leer.
* Die Fallback-Anrede funktioniert trotzdem.
*/
$gender = '';
}
/*
* =========================================
* DU-ANREDE
* =========================================
*
* Frau + Vorname -> Liebe Anna,
* Herr + Vorname -> Lieber Peter,
* Divers + Vorname -> Hallo Alex,
* keine Daten -> Hallo,
*/
if ( $shortcode === '[custom:anrede_du]' ) {
if ( $firstname === '' ) {
return 'Hallo,';
}
if ( $gender === 'Frau' ) {
return 'Liebe ' . $firstname . ',';
}
if ( $gender === 'Herr' ) {
return 'Lieber ' . $firstname . ',';
}
return 'Hallo ' . $firstname . ',';
}
/*
* =========================================
* SIE-ANREDE
* =========================================
*
* Frau + Nachname -> Liebe Frau Müller,
* Herr + Nachname -> Lieber Herr Müller,
*
* Divers:
* Vor- + Nachname -> Guten Tag Alex Müller,
* nur Vorname -> Guten Tag Alex,
*
* keine Daten -> Guten Tag,
*/
if ( $shortcode === '[custom:anrede_sie]' ) {
if ( $gender === 'Frau' && $lastname !== '' ) {
return 'Liebe Frau ' . $lastname . ',';
}
if ( $gender === 'Herr' && $lastname !== '' ) {
return 'Lieber Herr ' . $lastname . ',';
}
$name = trim( $firstname . ' ' . $lastname );
if ( $name !== '' ) {
return 'Guten Tag ' . $name . ',';
}
return 'Guten Tag,';
}
}
return $shortcode;
}, 10, 6 );Ausgabevarianten
| Anrede | Vorname | Nachname | Du-Version | Sie-Version |
|---|---|---|---|---|
| Frau | Anna | Müller | Liebe Anna, | Liebe Frau Müller, |
| Frau | Anna | leer | Liebe Anna, | Guten Tag Anna, |
| Herr | Peter | Maier | Lieber Peter, | Lieber Herr Maier, |
| Herr | Peter | leer | Lieber Peter, | Guten Tag Peter, |
| Divers | Alex | Mustermann | Hallo Alex, | Guten Tag Alex Mustermann, |
| Divers | Alex | leer | Hallo Alex, | Guten Tag Alex, |
Verwendung im Newsletter
Im Du-Newsletter:
[custom:anrede_du]Im Sie-Newsletter:
[custom:anrede_sie]Technische Hinweise
- Der Shortcode wird von MailPoet für jeden Empfänger einzeln ausgewertet.
- Die Vorschau sollte vor dem echten Versand getestet werden.
- Zusätzlich immer mindestens einen echten Testversand durchführen.
- Der Zugriff über
$subscriber->getCustomFields()funktioniert in MailPoet 5.40.0 nicht. - Stattdessen wird der Subscriber über die offizielle MailPoet-API geladen.
- Die Custom-Field-ID
cf_1muss bei anderen Projekten angepasst werden.
Empfohlene Formularstruktur
- Anrede: Pflichtfeld mit Herr / Frau / Divers
- Vorname: Pflichtfeld
- Nachname: optional
- Du/Sie-Auswahl: über zwei separate MailPoet-Listen