Contact Form 7 5.4 ベータ

次のメジャーアップデートとなる Contact Form 7 バージョン 5.4 は2月24日にリリースされる予定です。5.4 では異例に大きな変更が行われるため、本番リリースの前に数週間のベータテスト期間を設けることにしました。

ベータ版のプラグインパッケージは GitHub のリポジトリからダウンロードできます。バグを見つけた場合は GitHub に Issue を作成して報告をお願いします。

Contact Form 7 5.4 と正しく連携できないアドオンプラグインを見つけた場合は私たちにではなくそのプラグインの開発者に報告してください。サードパーティの製品には責任を負いかねます。

5.4 の主要な変更は次の4グループに大別されます:

変更の完全なリストは GitHub で閲覧できます。

Sendinblue インテグレーションモジュールの導入

12月にお知らせしましたように、ヨーロッパで人気のある CRM とメールマーケティングのプラットフォーム、Sendinblue のためのインテグレーションモジュールの導入準備を進めています。

このモジュールは他のサービスとのインテグレーションメニューページ(お問い合わせ > インテグレーション)に Sendinblue を追加します。詳細と使い方は Sendinblue integration を参照してください。

  • 新しいフィルターフック: wpcf7_sendinblue_collect_parameters
  • インテグレーションメニューページで使われる wpcf7_mask_password() が改良されました。マスクされないテキストの長さが右左両側について設定可能になります。

おもて側 JavaScript の大改修

5.4 ではウェブサイトのおもて側(管理画面ではない領域)で使用される JavaScript について抜本的な変更が行われました。これまで長い間 jQuery ベースのスクリプトが使われてきましたが、新しい JavaScript のコーディングは WordPress がバンドルする @wordpress パッケージ群に依存します。jQuery UI に基づいた日付ピッカーのフォールバックで使われているものなどのわずかな例外を残して jQuery への依存は排除されます。

  • 古びて今では必要のなくなったいくつかの機能は削除されます。これにはプレースホルダーや数値フィールドのための Polyfill が含まれます。
  • 新しい DOM イベントタイプ: wpcf7reset (フォームのリセットに際して発火する)
  • 以前のバージョンでは wpcf7* イベントのイベントターゲットは form 要素の親にあたる div 要素でした。5.4 でこれが form 要素自体に変更されます。しかしながら、wpcf7* イベントはドキュメントルートに向かってバブリングするようにできているので、この変更がそれら DOM イベントの実際の使用に影響することはありません。今後も親の div 要素をターゲットにして問題ありません。
  • フォーム送信の前に reCAPTCHA が新規トークンを取得します。トークン期限切れ問題はこれで解決するはずです。

アップロードされたファイルの処理の改良

5.4 より前のバージョンではアップロードされたファイルの処理の大半はファイルモジュール (modules/file.php) 内で実装されていました。このやり方では独自にファイルアップロードモジュールを開発しようとしたときに厄介なことなります。というのも、プロセス全体を再度あなたのモジュール内に実装し直す必要があり、冗長になるためです。5.4 ではこのプロセスがモジュールと無関係のファイル (includes/file.php) に移動され、アップロードされたファイルのより安全な処理を可能にする新たなやり方が導入されます。

  • WPCF7_Submission クラスの add_uploaded_file()remove_uploaded_files() がプライベートメソッドになります。つまり、あなたのカスタムモジュールの関数からこれらを呼び出すことができなくなります。これらのメソッドを呼び出す代わりに、ちょうど組み込みのファイルモジュールがしているように、あなたのカスタムフォームタグが file-uploading 機能をサポートするようにしてください。
  • アップロードされたファイルの処理はスパム検知の後で実行されます。この処理は時間とリソースを比較的大きく消費するものです。送信がスパムだとわかっているのなら中止して問題ありません。
  • 入力値検証(必須項目やファイルタイプ、ファイルサイズのチェックなど)は新たに導入される wpcf7_unship_uploaded_file() で行われます。この関数は入力が不正である場合に WP_Error オブジェクトを、適正である場合にファイルパスの配列を返します。
  • wpcf7_unship_uploaded_file() の出力は入力値検証のフィルター関数にその第3引数を通じて渡されます。出力が WP_Error の場合は、フィルター関数は invalidate() を呼び出してフォームにエラーを通知することが望まれます。
  • wpcf7_unship_uploaded_file()単一のファイル項目を通じて一度にアップロードされた複数のファイルを処理できるように設計されています。
  • WPCF7_Submission::uploaded_files() の出力に変更があります。以前はファイルパスの配列でしたが、5.4 ではファイルパスの配列の配列に変わります。
  • wpcf7_upload_file_name フィルター関数に渡される第3引数が変更されます。以前は WPCF7_FormTag オブジェクトが渡されていました。5.4 では wpcf7_unship_uploaded_file() に渡される $args 配列に変わりますが、引き続き $args['tag'] を通じて WPCF7_FormTag オブジェクトにアクセスすることは可能です。

現代的な CSS を用いた新しいスピナーアイコン

5.4 ではスピナーアイコン(別名 Ajax ローダー)が根本から見直されます。以前はアニメーション GIF が使われていました。新しいアイコンは現在のブラウザで利用できるいくつかの CSS トリックが用いられた実装に変わります。

  • assets/ajax-loader.gif は削除されます。
  • 以前のバージョンの Contact Form 7 は、スピナーアイコンの span 要素に is-active クラスを設定することでアイコンの可視性を制御していました。5.4 では is-active クラスの使用は廃止されます。その代替として form 要素の submitting クラスがこの目的のために使用されます。