Saya ingin menambahkan header tambahan ke email keluar di situs saya, jadi saya dapat dengan mudah menentukan situs mana yang mengirim email yang diberikan. (Saya meletakkan plugin fungsionalitas standar di semua situs saya, jadi ini cukup mudah untuk dilakukan, dan mengonfigurasi klien email saya untuk difilter dan jika tidak bertindak pada tajuk ini akan menghemat waktu yang luar biasa.)
Saya pikir ini akan menjadi masalah sederhana memasukkan ke dalam wp_mail
fungsi, tetapi ternyata tidak.
Pertama, saya mencoba ini:
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));
}
Di sini, array saya lebih diutamakan daripada yang lain yang mengubah pengaturan email (katakanlah, Gravity Forms), jadi email HTML mulai muncul sebagai HTML kosong dan tidak diformat dengan baik. Masuk akal, karena header Tipe-konten: yang ditambahkan GF dihapus. Tetapi tajuk saya ditambahkan ke email. Karena yang lain juga bergantung pada penerimaan email yang bagus (semua pengembang konten dan pengguna akhir situs saya, antara lain saya yakin), itu tidak dapat diterima.
Salah satu kolega saya kemudian menyarankan untuk merutekan barang-barang saya melalui wp_parse_args (), jadi:
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);
}
Dengan itu, seolah-olah fungsi saya tidak ada - tajuk saya tidak ditambahkan, tetapi tajuk dan pengaturan surat lainnya juga tidak dicopot.
Apa cara yang benar untuk menambahkan header ke email keluar, tanpa mengacaukan filter lain yang mungkin ada?