サイトの送信メールにヘッダーを追加したいので、特定のメールを送信したサイトを簡単に特定できます。(私はすべてのサイトに標準機能プラグインを配置しているので、これは簡単に実行できます。メールヘッダーをフィルターに設定し、このヘッダーを操作するように構成すると、時間を大幅に節約できます。)
これはwp_mail
関数にプラグインするという単純な問題だと思っていましたが、明らかにそうではありません。
まず、私はこれを試しました:
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として表示され、適切にフォーマットされませんでした。GFが追加したContent-type:ヘッダーがスクラブされているため、理にかなっています。しかし、私のヘッダーはメールに追加されました。他の人もかなりのメールを受信することに依存しているため(私のサイトのすべてのコンテンツ開発者とエンドユーザー、とりわけ私は確信しています)、それは受け入れられません。
次に、私の同僚の1人が、wp_parse_args()を使用して自分のものをルーティングすることを提案しました。
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);
}
これで、私の機能が存在しないかのように見えます-私のヘッダーは追加されませんが、他のヘッダーもメール設定も削除されません。
存在する可能性のある他のフィルターをスクランブルすることなく、送信メールにヘッダーを追加する正しい方法は何ですか?