質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

1回答

863閲覧

WordPressサイトのお問い合わせフォームから送信されるメール本文の改行を消さずに入力した内容通りに送信したい。

kotori21

総合スコア11

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2020/01/24 01:24

編集2020/01/29 06:55

実現したいこと

WordPressもプログラミングも理解できていないところが多いのですが、現在WordPressを利用したサイトを運用しています。
「WP Fluentform」というプラグインを用いてお問い合わせフォームを作ったのですが、お問い合わせフォームから送信されるメール本文が改行されず、1行になって表示されてしまいます。
メール本文の改行を消さずに入力した内容通りに送信したいです。

試したこと

少し前まではfunctions.phpに下記のソースコードを追加したら改行できていました。

php

1function fluentform_filter_email_new_line ($notification, $data, $form, $entryId) { 2 $notification['message'] = str_replace ("\n", "<br/>", $notification['message']); 3 $notification['message'] = str_replace ("\r\n", "<br/>", $notification['message']); 4 return $notification; 5} 6add_filter('fluentform_filter_email_notification','fluentform_filter_email_new_line',10,4);

いつから改行していなかったのかはまだわかっていないのですが、おそらくプラグインの更新を行ってからではないかと考えています。

データベースにはちゃんと改行された状態でお問い合わせ内容が入っていました。
他のプラグインが影響しているのかと思い、文字コードやメール送受信に影響しそうなプラグインを停止してみたりしたのですが、うまくいきませんでした。

他に何をすればいいのかわからず。。。
お助けください。

補足情報

WordPressのバージョンは5.3.2です。

よろしくお願いします。

追記1

送信されるメールはHTMLメールです。

追記2

下記のようにプラグインのソースコード(EmailNotification.php)に直接書いてみたら動作しました。

php

1public function notify($notification, $submittedData, $form, $entryId = false) 2 { 3 $headers = $this->getHeaders($notification); 4 5 $attachments = $this->app->applyFilters( 6 'fluentform_filter_email_notification', 7 isset($notification['attachments']) ? $notification['attachments'] : [], 8 $notification, 9 $form, 10 $submittedData 11 ); 12 // 置換処理 3行追加 13 $notification['message'] = str_replace ("\n", "<br/>", $notification['message']); 14 $notification['message'] = str_replace ("\r\n", "<br/>", $notification['message']); 15 $emailBody = $notification['message']; 16 17 $isSendAsPlain = ArrayHelper::get($notification, 'asPlainText') == 'yes'; 18 19 if (!apply_filters('fluenform_send_plain_html_email', $isSendAsPlain, $form, $notification)) { 20 $emailBody = $this->getEmailWithTemplate($emailBody, $form, $notification); 21 } 22 23 if( ArrayHelper::get($notification, 'sendTo.type') == 'field' && !empty($notification['sendTo']['field']) ) { 24 $notification['sendTo']['email'] = ArrayHelper::get($submittedData, $notification['sendTo']['field']); 25 } 26 27 if ( !$notification['sendTo']['email'] || !$notification['subject'] ) { 28 do_action('ff_log_data', [ 29 'parent_source_id' => $form->id, 30 'source_type' => 'submission_item', 31 'source_id' => $entryId, 32 'component' => 'EmailNotification', 33 'status' => 'error', 34 'title' => 'Email sending skipped', 35 'description' => "Email skipped to send because email may not valid.<br />Subject: {$notification['subject']}. <br/>Email: " . $notification['sendTo']['email'], 36 ]); 37 return false; 38 } 39 40 if ($entryId) { 41 do_action('ff_log_data', [ 42 'parent_source_id' => $form->id, 43 'source_type' => 'submission_item', 44 'source_id' => $entryId, 45 'component' => 'EmailNotification', 46 'status' => 'info', 47 'title' => 'Email sending initiated', 48 'description' => "Email Notification broadcasted to " . $notification['sendTo']['email'] . ".<br />Subject: {$notification['subject']}", 49 ]); 50 51 /* 52 * Inline email logger. It will work fine hopefully 53 */ 54 add_action('wp_mail_failed', function ($error) use ($notification, $form, $entryId) { 55 $failedMailSubject = ArrayHelper::get($error->error_data, 'wp_mail_failed.subject'); 56 if ($failedMailSubject == $notification['subject']) { 57 $reason = $error->get_error_message(); 58 do_action('ff_log_data', [ 59 'parent_source_id' => $form->id, 60 'source_type' => 'submission_item', 61 'source_id' => $entryId, 62 'component' => 'EmailNotification', 63 'status' => 'failed', 64 'title' => 'Email sending failed', 65 'description' => "Email Notification failed to sent.<br />Subject: {$notification['subject']}. <br/>Reason: " . $reason, 66 ]); 67 } 68 }, 10, 1); 69 } 70 71 $isMailSentSuccessfully = wp_mail( 72 $notification['sendTo']['email'], 73 $notification['subject'], 74 $emailBody, 75 $headers, 76 $attachments 77 ); 78 79 return $isMailSentSuccessfully; 80 }

同じようにfunctions.phpに書いてみたのですが、そうすると改行されません。
「functions.phpに書いた時はそもそもメール本文をとってきてないのでは?」と思い、ネットで調べてログファイルに出力してみましたが、何も出力されませんでした。
functions.phpの時は改行されないのは何が原因なのでしょうか?
ご教示いただければ幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2020/01/24 01:41

メール本文なら改行タグいれてはいけないのでは? HTMLメールなんですか?
kotori21

2020/01/24 01:49

説明不足ですみません。HTMLメールです。
m.ts10806

2020/01/24 02:01

質問本文に追記してください。 ただ、単に置換処理通ってないか違う改行コードになってるため置換できてないかどっちかだと思います
kotori21

2020/01/24 02:08

ご指摘ありがとうございます。質問本文にも追記しました。 もう一度確認してみます。
guest

回答1

0

プラグイン作者がプロ版の為に中身を削ったのか、もしくは実装を忘れているのか詳細は分かりませんが、バージョン2.0.1までは提示のコードで動いたようですが、以降は動作していないと思います。
プラグインのページを見るとMore Advanced Fields in Proと書かれてて- Action Hook Fieldとあるのでプロ版じゃないと動かないような仕様に変更したのかもしれません。
一度、プラグイン作者に確認してみてはいかがでしょうか。
https://wordpress.org/support/plugin/fluentform/

投稿2020/01/31 08:55

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kotori21

2020/02/07 01:58

返信がおそくなりすみません。。。 詳しい解説、ありがとうございます! 先程プラグイン作者に問い合わせてみたので、回答を待ちたいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問