Quiero agregar un encabezado adicional a los correos electrónicos salientes en mis sitios, para poder determinar fácilmente qué sitio envió un correo electrónico determinado. (Puse un complemento de funcionalidad estándar en todos mis sitios, por lo que es bastante fácil de hacer, y configurar mi cliente de correo electrónico para filtrar y, de lo contrario, actuar en este encabezado sería un ahorro de tiempo increíble).
Pensé que esto sería una simple cuestión de conectarse a la wp_mail
función, pero evidentemente no lo es.
Primero, probé esto:
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));
}
Aquí, mi matriz tenía prioridad sobre cualquier otra cosa que modificara la configuración del correo (por ejemplo, Gravity Forms), por lo que los correos electrónicos HTML comenzaron a aparecer como HTML simple y sin formato. Tiene sentido, ya que se eliminó el encabezado Content-type: que GF agregó. Pero mi encabezado fue agregado al correo electrónico. Dado que otros también dependen de recibir bonitos correos electrónicos (estoy seguro de que todos los desarrolladores de contenido y usuarios finales de mis sitios, entre otros), eso no es aceptable.
Uno de mis colegas sugirió enrutar mis cosas a través de wp_parse_args (), por lo tanto:
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);
}
Con eso, es como si mi función no existiera: mi encabezado no se agrega, pero tampoco se eliminan los encabezados y la configuración de correo de los demás.
¿Cuál es la forma correcta de agregar un encabezado a un correo electrónico saliente, sin codificar ningún otro filtro que pueda existir?