こんにちは
先ほど返信がコード部分が長かったからなのか承認待ちになってしまいましたので、
コード部分をPASTEBINに貼り付けた上で再返信します
送信されるメールの本文内だけで有効になれば良いのでしたら、
自動返信メールなら mwform_auto_mail_mw-wp-form-xxx
フィルター、
管理者宛メールなら mwform_admin_mail_mw-wp-form-xxx
フィルターで実現可能だと思います
文章で説明しようと思うと難しかったので、コードを書いてみました、ご参考まで
※ メール本文内でセパレーターが改行される事までは確認しましたが、(その他の部分への影響などは確認していないので)実際に使用なさる場合は、ご自身で書いたコードと同様に動作確認をお願いします
https://pastebin.com/EXbyaTGk
@colorfullifeinfoさん
詳細なご回答ありがとうございました!
いただいたコードで実現できました。
単純にセパレーターを文字列置換するだけではダメだったのですね。
本当にありがとうございました。
解決済みなので蛇足になりますが、齟齬があるといけませんので一応補足させてください
単純にセパレーターを文字列置換するだけではダメだったのですね。
セパレーターに指定した文字を改行に置き換える、という目的のみに於いては、メール本文の文字列に対して「セパレーターを文字列置換するだけ」で良いと思います
検証はしていませんが、フィルターした関数の中でメール本文内のセパレーター文字を置換した上で $Mail->body
に戻してあげれば反映されるはずです
ただ、選択項目ではないフィールド(textやtextarea等)の値やその他の本文内にセパレーターと同じ文字列が含まれていた場合を考慮して、提示したようなコードにしました
単純な置換だけでは \n が文字列としてそのままメール内に\nと出力されてしまい、
うまくいかなかったのです。。
(最初の質問では¥nも試していたので、
その¥が勝手に全角にもなってしまうことを書いていましたが、
\nも試していた上でうまくいかなかったので)
うーん…、やっている事は、
・メール本文内の文字列の一部(選択項目の送信された値)を取り出し
・その中のセパレーターを改行に置き換え
・メール本文に戻す
だけなので、基本的には同じだと思うのですが・・・。
考えられるのは、改行文字を '\n'
(シングルクォーテーションで括る)としていた、とかですかね?
どうやらシングルクォーテーションで囲っていたようです。。
その辺りがよくわかっておりませんでした。