Ich möchte ausgehenden E-Mails auf meinen Websites einen zusätzlichen Header hinzufügen, damit ich leicht feststellen kann, welche Website eine bestimmte E-Mail gesendet hat. (Ich habe auf allen meinen Websites ein Plugin für Standardfunktionen installiert, sodass dies einfach genug ist. Die Konfiguration meines E-Mail-Clients zum Filtern und anderweitigen Bearbeiten dieses Headers wäre eine erstaunliche Zeitersparnis.)
Ich dachte, dies wäre eine einfache Sache des Einsteckens in die wp_mail
Funktion, aber offensichtlich ist es nicht so.
Zuerst habe ich Folgendes versucht:
add_filter('wp_mail', 'ws_add_site_header');
function ws_add_site_header() {
return array('headers' => 'X-WU-Site: ' . parse_url(get_site_url(), PHP_URL_HOST));
}
Hier hatte mein Array Vorrang vor allen anderen Elementen, die die E-Mail-Einstellungen geändert haben (z. B. Gravity Forms), sodass HTML-E-Mails als reines HTML und nicht gut formatiert angezeigt wurden. Sinnvoll, da der von GF hinzugefügte Content-Type: -Header gelöscht wurde. Aber mein Header wurde der E-Mail hinzugefügt. Da andere auch darauf angewiesen sind, hübsche E-Mails zu erhalten (unter anderem alle Content-Entwickler und Endbenutzer meiner Websites, da bin ich mir sicher), ist dies nicht akzeptabel.
Einer meiner Kollegen schlug dann vor, meine Sachen über wp_parse_args () zu leiten, also:
add_filter('wp_mail', 'ws_add_site_header');
function ws_add_site_header($args) {
$new_header = array('headers' => 'X-WU-Site: ' . parse_url(get_site_url(), PHP_URL_HOST));
return wp_parse_args($args, $new_header);
}
Damit ist es so, als ob meine Funktion nicht existiert - mein Header wird nicht hinzugefügt, aber auch die Header und E-Mail-Einstellungen anderer werden nicht entfernt.
Was ist der richtige Weg, um einer ausgehenden E-Mail einen Header hinzuzufügen, ohne andere Filter zu verschlüsseln, die möglicherweise vorhanden sind?