WordPressで問い合わせフォームのプラグインでは、「Contact Form 7」 が使われると思うのですが、標準では確認ページや完了画面ページがありません。手を加えれば対応することも可能ですが、確認や完了が必要な場合には「MW WP Form」を利用させていただくことが多いです。
「MW WP Form」には標準で、確認ページや完了画面ページの設定がありそれに加え、フォームに入力された内容をデーターベースに保存する機能も備わっています。
今回、フォームの項目にファイル投稿の項目を追記したのですが、フォームで問い合わせがあった際に送られる管理者宛のメールには外しデーターベースには登録するようにしたいとの要望をいただき対応したので、この方法をご紹介します。
管理者宛のメール内容の編集方法は、「MW WP Form」公式のマニュアルに記載されています。この他にも使い方やカスタマイズに関して詳しく書かれているので困った時には、ここを確認されることをお勧めします。この中で、変数のサンプルコードをみると
/** * my_mail * @param MW_WP_Form_Mail $Mail_raw * @param array $values * @param MW_WP_Form_Data $Data */ function my_mail( $Mail_raw, $values, $Data ) { // to, cc, bcc では {キー} は使用できません。 // $Data->get( 'hoge' ) で送信されたデータが取得できます。 $Mail_raw->from = 'hoge@example.jp'; // 送信元を変更 $Mail_raw->sender = 'hoge'; // 送信者を変更 $Mail_raw->subject = {お名前}様からの問い合わせ; // 件名を変更 $Mail_raw->body = '{問い合わせ内容}'; // 本文を変更 return $Mail_raw; } add_filter( 'mwform_admin_mail_raw_mw-wp-form-xxx', 'my_mail', 10, 3 );
とのことで、bodyにファイル項目の{キー} を入れなければいいのかと思ってやったのですが、うまくいきせんでした。本文じゃなく添付ファイルとして扱われているのかな?と次にsubjectやbodyのように項目がないかプラグインのソースコードを眺めていると「attachments」というのがそれっぽいのでこれを空にして見ます。
/** * my_mail * @param MW_WP_Form_Mail $Mail_raw * @param array $values * @param MW_WP_Form_Data $Data */ function my_mail( $Mail_raw, $values, $Data ) { $Mail_raw->attachments = ''; // 添付ファイルを変更 return $Mail_raw; } add_filter( 'mwform_admin_mail_raw_mw-wp-form-xxx', 'my_mail', 10, 3 );
これでうまく、管理者宛のメールにはファイルは送られず、データーベースに登録されるようになりました。