- 21, Oct 2024
- #1
Я хочу добавить дополнительный заголовок к исходящим электронным письмам на своих сайтах, чтобы можно было легко определить, какой сайт отправил данное письмо. (Я установил плагин стандартной функциональности на все свои сайты, так что это достаточно легко сделать, а настройка моего почтового клиента на фильтрацию и другие действия с этим заголовком могла бы значительно сэкономить время.)
Я думал, что это будет простой вопрос подключения к
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);
}
function, but evidently it isn't.
Сначала я попробовал это:
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));
}
Здесь мой массив имел приоритет над всем остальным, что изменяло настройки почты (скажем, Gravity Forms), поэтому электронные письма в формате HTML начали отображаться как чистый HTML и не отформатированы должным образом. Это имеет смысл, поскольку заголовок Content-type:, добавленный GF, был очищен. Но мой заголовок был добавлен в письмо. Поскольку другие также зависят от получения красивых электронных писем (я уверен, среди всех разработчиков контента и конечных пользователей моих сайтов), это неприемлемо.
Затем один из моих коллег предложил маршрутизировать мои данные через wp_parse_args(), таким образом:
wp_mail
При этом моя функция как будто не существует — мой заголовок не добавляется, но и чужие заголовки и настройки почты не удаляются.
Как правильно добавить заголовок к исходящему электронному письму, не запутывая какие-либо другие фильтры, которые могут существовать?
#фильтры #электронная почта #wp-mail