WordPress Filter für E-Mail Benachrichtigung bei Benutzer-Registrierung

Vorschaubild für Blogbeitrag

In diesem kleinen Tutorial will ich dir zeigen wie man ausgehende E-Mails in WordPress, bezogen auf eine neue Benutzerregistrierung, anpasst und nach seinen Wünschen abändern kann.

E-Mail für Administrator Benachrichtigung

Wenn sich ein neuer Benutzer auf einer WordPress Website registriert, wird eine E-Mail Benachrichtigung an die Administrator-E-Mail-Adresse gesendet, welche unter Einstellungen > Allgemein > E-Mail-Adresse im WordPress Backend eingestellt wurde.

Diese E-Mail-Adresse wird für alle Benachrichtigungen innerhalb der Administration genutzt. Um speziell E-Mail Benachrichtigungen für neue Benutzerregistrierungen anzupassen, bietet WordPress uns hier einen Filter. Diesen können wir benutzen, um die entsprechende E-Mail, das heißt den Betreff, die eigentliche Nachricht, die Empfänger-Adresse und den Header der E-Mail zu bearbeiten.

Hierzu nutzen wir den Filter ‘wp_new_user_notification_email_admin’, welchen du zum Beispiel innerhalb deiner functions.php Datei einbauen kannst.

Im folgenden Code Beispiel ändern wir so einfach die Empfänger-Adresse zu ‘your@domain.de‚. Diese kannst du für dich entsprechend anpassen. Registriert sich nun ein neuer Benutzer auf deiner Website, wird nun eine E-Mail Benachrichtigung an die eingerichtete E-Mail-Adresse versendet und nicht wie bisher an die Administrator-E-Mail-Adresse.

if (!function_exists('new_user_notif_admin')) :
	/**
	 * Filters the contents of the new user 
	 * notification email sent to the site admin.
	 *
	 * @param array   $mail {
	 *     Used to build wp_mail().
	 *
	 *     @type string $to The intended recipient.      
	 *     @type string $subject The subject of the email.
	 *     @type string $message The body of the email.
	 *     @type string $headers The headers of the email.
	 * }
	 * @param WP_User $user     User object for new user.
	 * @param string  $blogname The site title.
	 */
	function new_user_notif_admin($email, $user, $blogname):
	{
		$email['to'] = 'your@domain.de';
		return $mail;
	}
	add_filter(
		'wp_new_user_notification_email_admin', 
		'new_user_notif_admin', 
		10, 
		3
	);
endif;

Den WordPress Filter rufen wir mit ‚add_filter()‚ auf, wobei der erste Parameter den Filternamen definiert, den wir hier nutzen wollen und der zweite Parameter der Name unserer Callback-Funktion, die für den Filter aufgerufen wird. Die letzten beiden Parameter geben die Priorität (hier 10 und der Default Wert) und die Anzahl der übergebenen Parameter zur Callback-Funktion (hier 3, damit wir alle Parameter nutzen können, auch wenn wir aktuell nur einen, $email, benutzen)


E-Mail für Benutzer Benachrichtigung

Bei einer neuen Registrierung erhält natürlich nicht nur der Admin eine Benachrichtigung, sondern auch der neue Benutzer selbst. Diese E-Mail können wir ebenfalls für uns entsprechend anpassen indem wir den Filter ‚wp_new_user_notification_email‚ nutzen. Im folgenden Beispiel Code passen wir den Inhalt der E-Mail an.

if (!function_exists('new_user_notif_user')) :
	/**
	 * Filters the contents of the new user 
	 * notification email sent to the new user.
	 *
	 * @param array   $email {
	 *     Used to build wp_mail().
	 *
	 *     @type string $to The intended recipient.
	 *     @type string $subject The subject of the email.
	 *     @type string $message The body of the email.
	 *     @type string $headers The headers of the email.
	 * }
	 * @param WP_User $user     User object for new user.
	 * @param string  $blogname The site title.
	 */
	function new_user_notif_user($email, $user, $blogname):
	{
		$message = 'Vielen Dank für die Registrierung!';
		$email['message'] = $message;
		return $email;
	}
	add_filter(
		'wp_new_user_notification_email', 
		'new_user_notif_user', 
		10, 
		3
	);
endif;

Die beiden Filter sowie einige weitere, die den E-Mail-Verkehr betreffen, werden in unseren Projekten eingesetzt, um den E-Mails zum Beispiel ein passendes Unternehmens-Branding zu verpassen, entsprechende E-Mails an unterschiedliche Adressen senden zu lassen und um Unternehmensprozesse sowie die Organisation solcher Benachrichtigungen innerhalb eines Teams besser zu koordinieren.

Der Spielraum innerhalb unserer Callback-Funktionen ist natürlich sehr groß. Über unserem einfachen Beispiel hinaus, können natürlich E-Mails auch an mehrere Adressen versendet werden, die E-Mail Nachricht kann aufwendig mittels HTML geschrieben und vieles mehr.