Voglio aggiungere un'intestazione aggiuntiva alle e-mail in uscita sui miei siti, in modo da poter determinare facilmente quale sito ha inviato una determinata e-mail. (Ho messo un plug-in di funzionalità standard su tutti i miei siti, quindi questo è abbastanza facile da fare e configurare il mio client di posta elettronica per filtrare e altrimenti agire su questa intestazione sarebbe un fantastico risparmio di tempo.)
Ho pensato che sarebbe stata una semplice questione di collegarsi alla wp_mail
funzione, ma evidentemente non lo è.
Innanzitutto, ho provato questo:
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));
}
Qui, il mio array ha avuto la precedenza su qualsiasi altra cosa che ha modificato le impostazioni di posta (diciamo Gravity Forms), quindi le e-mail HTML hanno iniziato a comparire come HTML nudo e non ben formattate. Ha senso, poiché l'intestazione Content-type: GF aggiunta è stata cancellata. Ma la mia intestazione è stata aggiunta all'email. Dal momento che altri dipendono anche dalla ricezione di belle e-mail (tutti gli sviluppatori di contenuti e gli utenti finali dei miei siti, tra l'altro ne sono certo), ciò non è accettabile.
Uno dei miei colleghi ha quindi suggerito di instradare le mie cose attraverso wp_parse_args (), quindi:
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);
}
Detto questo, è come se la mia funzione non esistesse: la mia intestazione non viene aggiunta, ma nemmeno le intestazioni e le impostazioni di posta degli altri vengono rimosse.
Qual è il modo corretto di aggiungere un'intestazione a un'e-mail in uscita, senza rimescolare altri filtri che potrebbero esistere?