Desejo adicionar um cabeçalho adicional aos emails de saída em meus sites, para que eu possa determinar facilmente qual site enviou um determinado email. (Eu coloquei um plug-in de funcionalidade padrão em todos os meus sites, para que isso seja fácil o suficiente, e configurar meu cliente de email para filtrar e agir nesse cabeçalho seria uma economia de tempo incrível.)
Eu pensei que isso seria uma simples questão de conectar-se à wp_mail
função, mas evidentemente não é.
Primeiro, tentei o seguinte:
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));
}
Aqui, minha matriz teve precedência sobre qualquer outra coisa que modificasse as configurações de correio (por exemplo, Gravity Forms), de modo que os emails em HTML começaram a aparecer como HTML simples e não foram bem formatados. Faz sentido, uma vez que o cabeçalho Content-type: que a GF adicionou foi limpo. Mas meu cabeçalho foi adicionado ao email. Como outros também dependem de receber e-mails bonitos (todos os desenvolvedores de conteúdo e usuários finais dos meus sites, entre outros, tenho certeza), isso não é aceitável.
Um dos meus colegas sugeriu encaminhar minhas coisas por wp_parse_args (), assim:
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);
}
Com isso, é como se minha função não existisse - meu cabeçalho não foi adicionado, mas os cabeçalhos e as configurações de email de outras pessoas não foram removidos.
Qual é a maneira correta de adicionar um cabeçalho a um email de saída, sem embaralhar outros filtros que possam existir?