非常に限定的な環境ではありますが、マルチサイト+BuddyPressを利用している環境で、フォームの差出人がBuddyPressを入れている子サイト名に書き換わるという現象が起こっていました。フォームには、Contact Form 7を使用しています。
Contact Form 7では、差出人の表示名は入力した「名前」、メールアドレスは入力した「メールアドレス」になるように設定していました。にも関わらず、差出人の表示名が子サイトのサイト名になっていたんです。
この現象について対処した時の方法を備忘録として残しておきたいと思います。
差出人が書き換わる原因
差出人が書き換わってしまう原因は、BuddyPressにありました。BuddyPressのbp-core-filters.phpというファイルの中に、以下のような記述があります。
function bp_core_email_from_name_filter() { return apply_filters( 'bp_core_email_from_name_filter', wp_specialchars_decode( get_blog_option( bp_get_root_blog_id(), 'blogname' ), ENT_QUOTES ) ); } add_filter( 'wp_mail_from_name', 'bp_core_email_from_name_filter' );
bp_core_email_from_name_filterが、差出人をBuddyPressのサイト名に書き換えていたんです。
では、なぜ親サイトのフォームまで書き換わっていたのかというと、BuddyPressがマルチサイトのネットワークで有効化されていたからです。
対処法
対処法は2つあります。
1つ目は、ネットワークで有効化するのをやめて、BuddyPressを使いたいサイトでだけプラグインを有効化します。これでBuddyPressが有効化されていないサイトでは、差出人が書き換わることはなくなります。
もう1つは、bp-core-filters.php内にある上記記述をコメントアウトする方法です。bp-core-filters.phpは、wp-content/plugins/buddypress/bp-coreディレクトリ内にあります。
BuddyPressをネットワークで有効化しなければいけない場合は、bp-core-filters.phpを修正して対処します。
注意点
bp-core-filters.phpを変更すれば、フォームの差出人は書き換えられなくなるのですが、BuddyPressサイトでの通知メールの差出人がマルチサイトの親サイト名になってしまいます。
できれば、ネットワークでの有効化を外して、個別にプラグインを有効化する方法をおすすめします。
あとがき
そういないとは思いますが、同じような現象に悩まされている方の参考になれば幸いです。