MW WP Form 2.5.3 〜 2.7.0 までの機能追加・変更点総まとめ!

v2.5.2 のリリース記事を書いて以降、バージョンアップはしているもののリリース記事を書けていなかったので、一気にまとめてご紹介したいと思います。

  • 各フォーム項目で class 属性を指定できるように
  • フィルターフック mwform_default_settings が機能していなかった不具合を修正
  • フィルターフック mwform_content_wpautop_mw-wp-form-xxx を追加
  • フィルターフック mwform_no_save_keys_mw-wp-form-xxx を追加
  • フィルターフック mwform_upload_filename_mw-wp-form-xxx を追加
  • フィルターフック mwform_upload_dir_mw-wp-form-xxx を追加
  • メソッド MW_WP_Form_Data::get_form_key() を追加
  • メソッド MW_WP_Form_Mail::get_saved_mail_id() を追加
  • メソッド MW_WP_Form_Mail_Parser::get_saved_mail_id() を追加
  • アクションフック mwform_after_send_mw-wp-form-xxx の引数として MW_WP_Form_Data オブジェクトが渡されるように
  • From のメールアドレスが RFC に準拠していない場合にどこにもメールが送信されない不具合を修正
  • 郵便番号バリデーションで「000-0000」だけではなく「0000000」も許容するように変更

各フォーム項目で class 属性を指定できるようになりました。

これまでしばしばご要望を頂いていた各フォーム項目への class 属性の指定ができるようになりました。Bootstrap などの CSS フレームワークではフォーム項目に class を付与することでスタイリングできるようになっていることが多いので、CSS フレームワークがベースになっているテーマにおいてフォームのデザインがしやすくなりました。

フォーム設定の初期値を設定できるようになりました。

厳密にはっと前のバージョンからできていた(はず)なのですが、フィルターフック mwform_default_settings のバグで初期値を設定していてもそれが反映されないようになっていたので、その不具合を修正いたしました。

フィルターフック mwform_default_content でフォーム内容(HTML)の初期値を、フィルターフック wform_default_settings で完了画面の内容および各種設定の初期値を設定できます。

入力・確認・完了画面での wpautop の有効・無効を設定できるようになりました。

フィルターフック mwform_content_wpautop_mw-wp-form-xxx で入力・確認・完了画面での wpautop の有効・無効を設定できるようになりました。

データベースに保存しない項目を指定できるようになりました。

これまでは、管理者メールのメール内容に記入した {キー} が、そのメールのコピーとしてデータベースにも保存されるようになっていましたが、フィルターフック mwform_no_save_keys_mw-wp-form-xxx でデータベースに保存しない項目を指定できるようになり、メールでは送信するけどデータベースには保存しない項目というのを設定できるようになりました。

送信された画像・ファイルの保存先を変更できるようになりました。

MW WP Form では「データベースに保存」する設定になっている場合、送信された画像やファイルやメール添付されると同時に、メディアにも保存されるようになっています。そして、その保存先のパスは通常の画像やフィアルと同じように /wp-content/uploads/YYYY/MM のディレクトリとなっていました。

フィルターフック mwform_upload_dir_mw-wp-form-xxx により、この保存先のディレクトリを変更できるようになりました。また、保存されるファイル名は uniqid() 関数で生成した値がベースとなっていますが、フィルターフック mwform_upload_dir_mw-wp-form-xxx でこのファイル名も変更できるようになりました。

※ この記事を書いていて気づいたのですが、ディレクトリは変更せずにファイル名だけ変更、というのが効かないような気がします…。もし不具合に遭遇された方はぜひ教えてください。

便利メソッドの追加

MW_WP_Form_Data::get_form_key()

メール送信周りのフィルターフック等で渡される MW_WP_Form_Data オブジェクトに、現在のフォームのフォーム識別子を取得できるメソッドが追加されました。例えば、アクションフック mwform_after_send_mw-wp-form-xxx と組み合わせて、特定のフォームからのメール送信時にだけ何か処理をしたいというようなことができるようになりました。

MW_WP_Form_Mail::get_saved_mail_id() MW_WP_Form_Mail_Parser::get_saved_mail_id()

「データベースに保存」有効時、メール送信周りのフィルターフック等で渡される MW_WP_Form_Mail オブジェクト、また、MW_WP_Form_Mail_Parser オブジェクトで、保存した問い合わせデータの Post ID を取得できるようになりました。

開発中の v2.8.0 について

スラッグでフォームの呼び出しが可能になります。

これまで [[mwform_form key="xxx"]] というようにフォームの ID を指定してフォームの呼び出しを行えるだけでしたが、[mwform_formkey slug="form_slug"] のようにフォームのスラッグ指定でもフォームが呼び出せるようになります。

問い合わせデータ一覧で任意の順番にカラムを並べられるようになります。

フィルターフック mwform_inquiry_data_columns-mwf_xxx の追加により、問い合わせデータ一覧のカラムを任意の順番に並び替えられるようになります。また、カラム名はこれまでフォーム項目の name 属性が表示されるようになっており、例えば「fullname」という name 属性で送信した場合はカラム名に「fullname」と表示されていました。これを「fullname」という name 属性で送信するけど問い合わせデータ一覧では「お名前」と表示する、というようなことも可能になります。

docx, xlsx, pptx が送信できない不具合を修正

MW WP Form ではセキュリティ向上のため、通常の WordPress でのチェックに加え、PHP の finfo によるチェックもクリアしたものだけ添付・保存されるようになっています。ただ、MIME タイプが複数存在するような種類のファイルの場合、このあたりのチェックに漏れがあり添付・保存がされない、という不具合があります。2.8.0 では、docx、xlsx、pptx について添付・保存可能な MIME タイプの種類を追加しました。

「データベースに保存」有効時に、メールで保存された画像・ファイルの URL を送信できるようになります。

「データベースに保存」有効時に、メール内容に {ファイルアップロードのname}、{画像アップロードのname} とすることでそこからアップロードされたファイル・画像の URL を送信できるようになります。

datepicker の js 属性のチェックが厳密になります。

これまで、datepicker の js 属性は [[mwform_datepicker name="foo" js="maxDate: 0"]] のようにキー( maxDate の部分)を特に何で囲まなくても許容していましたが、これだと json_decode 関数で PHP の配列に変換できずプラグイン側で色々処理をかけることができませんでした。2.8.0 からは json_decode できるよう、[[mwform_datepicker name="foo" js='"maxDate": 0']] のようにキーの部分をダブルクオーテーションで囲まないといけないようになります。こうしないと 2.8.0 からは js 属性の指定が反映されないようになりますのでご注意ください