Contact Form 7 5.6 ベータ

Contact Form 7 5.6 が6月17日にリリースされます。5.6 では大規模な変更があるので、本番前テストのために 5.6 のベータ版をリリースします。

GitHub のリポジトリからベータ版をダウンロードできます。バグを見つけた場合は GitHub でイシューを発行して知らせてください。

併用しているアドオンプラグインやテーマが Contact Form 7 5.6 ベータと正しく動作しない場合はその製品の開発者に知らせてあげてください。私たちに連絡をいただいても第三者の製品について何もできることはありません。

スキーマ織りバリデーションの導入

5.6 の目玉はスキーマ織りバリデーションの導入です。これにより、サーバー側とクライアント (ブラウザー) 側の両方でのユーザー入力バリデーションが、単一のスキーマによって規定されるようになります。また、スキーマは WordPress REST API 経由で配布されるため、フォームの作成元であるサーバーとは別のサーバー上でユーザー入力のバリデーションを行うようなことも可能になります。

Contact Form 7 5.6 ではスキーマのために15種類のルール型がサポートされます。これらは 5.6 以前の Contact Form 7 でサポートされる従来型のバリデーションフィルターに相当するものです。将来のバージョンではさらなるルール型の追加が行われます。マルチステップフォームや条件付きロジックを可能にする「合成ルール」も遠からず登場するでしょう。

開発者の方へ: フィルターに基づいた既存のバリデーション機構は引き続き提供されます。作成したカスタムバリデーションフィルターを修正する必要はありません (当然それらはサーバー側でのバリデーションでしか機能しませんけど) 。

wpcf7_support_html5 フィルターフックの非推奨化

wpcf7_support_html5 フィルターフックは Contact Form 7 5.6 にて「非推奨」となり、また近い将来完全に廃止される予定です。

このフックは9年前、Contact Form 7 3.4 が HTML5 の入力タイプ対応のフォームタグを導入した際に作成されました。の値を返すコールバック関数をフックすることで、HTML5 入力タイプの使用の抑制を行うことができました。

現在では HTML5 の入力タイプは当たり前に使われるものとして受け入れられていますし、その使用を避ける理由もありません。なので wpcf7_support_html5 フィルターフックは実際にはもうすでに使われていないはずです。

ファイルタイプオプションにおける MIME タイプのサポート

ファイルアップロード項目の受け入れ可能なファイルタイプを宣言するために、以下の例の要領で MIME タイプを使用できるようになります:

[file file-123 filetypes:image/*|txt|application/pdf]
この項目はすべての画像ファイルとテキストファイル、PDF ファイルを受け入れます。

ファイルタイプ指定に使用可能な MIME タイプは、wp_get_mime_types() で定義されるものか、サブタイプ部でワイルドカード (*) を使用するもの (たとえば image/*) に限られます。

File API がそうであるように、ファイルタイプのバリデーションに MIME タイプが直接使用されるということはありません。つまり、バリデーターはファイルのバイトストリームを読み込んでメディアタイプを判別したりはしない、ということです。そうではなく、MIME タイプはファイル拡張子に一旦変換されて、それからファイル拡張子に基づいてバリデーションが行われます。

これに伴って Contact Form 7 5.6 では filetypes オプションの省略時に使用されるデフォルト値の変更が行われます。新しい filetypes オプションのデフォルト値は audio/*|video/*|image/* です。

フォームコントロールのマークアップの変更

DOM 操作をより確実にするため、フォームコントロールの HTML マークアップがわずかに変わります。この変更はほとんどのユーザーには影響しませんが、アドオンプラグインやフォームにスタイルを設定するテーマの開発者は注意する必要があるかもしれません。

新しいマークアップでは data-name="{field name}" 属性がフォームコントロールのラッパー要素 (wpcf7-form-control-wrap) に追加されます。また、その代わりとして、{field name} クラスがラッパー要素から削除されます。

旧マークアップ:

<span class="wpcf7-form-control-wrap your-name">
    <input class="wpcf7-form-control wpcf7-text" type="text" name="your-name" />
</span>

新マークアップ:

<span class="wpcf7-form-control-wrap" data-name="your-name">
    <input class="wpcf7-form-control wpcf7-text" type="text" name="your-name" />
</span>

その他の主要な変更

  • 数値入力項目: 小数入力のサポート。
  • 設定検証: Cc、Bcc、Reply-To で値が空のものも適正なメールヘッダーとして受け入れる。
  • メッセージ: バリデーションエラーのデフォルトメッセージをより自然な表現に変更。
  • WPCF7_ContactForm::is_false() を導入。
  • WPCF7_FormTagsManager::filter()basetype 条件をサポート。
  • wpcf7_exclude_blank() を導入。
  • $_SERVER['SERVER_NAME'] への参照を network_home_url() 由来のホスト名に置き換える。
  • REST API: フィードバック作成リクエストの Content-Type ヘッダーが multipart/form-data ではない場合に 415 HTTP エラーステータスを応答する。
  • WPCF7_Submission::get_posted_string() を導入。
  • WPCF7_Validation::invalidate()WP_Error オブジェクトを受け入れ可能にする。
  • wpcf7_is_url()wpcf7_is_tel()wpcf7_is_number() のバリデーションロジックを変更。
  • template_redirect に代えて shutdown アクションフックを使用する。

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