- ベストアンサー
Responsive Mailform の返信
WordPressを使用してホームページを作成しました。 そのプラグインのResponsive Mailformをインストールして、 お問合せページを作ったのですが、 そのページが上手く機能しません。 もう少し詳しく書きますと、 お問合せのフォームの項目に、 会社名を書いていただこうとして、一項目を追加したのですが、 その会社名がメールの返信に反映されません。 Responsive Mailformの設定の中に、「自分に届くメールの内容」「相手に届くメールの内容」というのがあって、そこに、 会社名という項目を追加すれば、メールにも「会社名」とは記載されるのですが、肝心の会社名が表記されません。 名前のところであれば「%7$s」と書かれていて、 この%7$sがそうとう怪しいと思っているのですが、この%7$sとか、他もそうですが、%10$sとか、 このパーセント数字$エス、 これはナニを指していますか?
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
独自項目の追加はおそらく class.mailform.php の改造が必要なのだと思います。 >このパーセント数字$エス、これはナニを指していますか? php の sprintf の記述のようです(初めて知りました) https://www.php.net/manual/ja/function.sprintf.php 『例1 引数の交換』を順に見ていくと、'The %2$s contains %1$d monkeys'で引数の順番を変えられる例が出てきます。 class.mailform.phpでは、254行目からの >$this->send_body = sprintf( で、このsprintfを使っているわけです。 つまり、%1$sは $this->year が入り(置換と同義)、順に、%26$sは $this->before_url になるということです。 では、『どうやったら会社名を追加できるか』ですが、最初の方にある private $before_url = ''; の次の行に、 private $company = ''; を追加、 『if( !( empty( $_POST['before_url'] ) ) ) { 』の【閉じ括弧】の後ろに、 if( !( empty( $_POST['company'] ) ) ) { $this->company = $this->sanitize_post( $_POST['company'] ); $this->company = mb_convert_kana( $this->company, 'KVa' ); } を追加、上記で書いた254行目から始まるsprintfの最後、 $this->before_url を $this->before_url, $this->company に修正します(カンマのあるナシに注意)。 設定『メールフォームのコード』で会社名のidとnameは"company"にし、 同じく設定『自分に届くメールの内容』の中で 会社名:%27$s として利用します。 『相手に届く自動返信メールの内容』でも使いたい場合は、285行目にある『$this->thanks_body = sprintf(』の最後に同じように追加して、『会社名:%21$s』とします。
お礼
教えていただいた通りに実行したつもりですが、 エラーが表示されてメールすら送れなくなってしまいました。 ファイルを再度ダウロードして、私が書いて上書きした分を 上書き、 Responsive Mailformのワードプレス側の設定に書いた 会社名:%27$sを消したら、とりあえず元に戻りました。 また明日精神を集中してやり直してみます。 >最初の方にある >private $before_url = ''; >の次の行に というprivate $before_url = '';はclass.mailform.phpの 40行目のもので合っていますでしょうか? 詳しく書いていただいたので、 じっくり落ち着いてやればきっとできると思います。 回答、ありがとうございました。
補足
質問者です。 昨日、表記の追加を行ったのですが、うまくいかなくて・・・本日、頭をリフレッシュして、書いてくださっている事をしっかり読み、 内容を理解した上で書き換えを行いました。 結果、無事に、会社名を送信先と自分への返信に入れる事ができました! 本当に助かりました。 ありがとうございます。一人で考えてたら、絶対にうまくいかなかったです。 お世話になりました! そして、丁寧にご解説くださったお陰です、感謝です。改めまして、ご回答ありがとうございました。