Contact Form 7のカスタムバリデーションで片方だけ必須
Contact Form 7はWordPressで最も広く使用されているコンタクトフォームプラグインの一つで、その柔軟性と拡張性により多くのウェブマスターに愛用されています。
しかし、多くの場合、標準的なフォーム機能ではユーザーの特定のニーズを満たせないことがあります。
ここで重要なのが、「カスタムバリデーション」の役割です。
この記事では、Contact Form 7でカスタムバリデーションルールを追加し、より高度なフォーム管理を実現する方法について詳しく解説します。
カスタムバリデーションを使うことで、フォームの入力値をより厳密にチェックし、サイト訪問者からの適切な情報収集を助けることができます。
コンタクトフォーム7の記述
<label>タイトル01
[text text-746]
</label>
<label>タイトル02
[text text-747]
</label>
必須設定の必要はないです。
functions.phpへの記載方法
function my_wpcf7_validate( $result, $tags ) {
$d1 = isset( $_POST['text-746'] ) ? $_POST['text-746'] : '';
$d2 = isset( $_POST['text-747'] ) ? $_POST['text-747'] : '';
if ( $d1 === '' && $d2 === '' ) {
$result->invalidate( 'text-747', 'どちらか記載してください。' );
}
return $result;
}
add_filter( 'wpcf7_validate', 'my_wpcf7_validate', 11, 2 );
変更方法
text-746、ext-747はどちらか一方必須にしたい部分の内容を記載します。
$result->invalidate( ‘text-747’, ‘どちらか記載してください。’ );
どちらに入力もれのアラートを出すかを指定します。
確認画面などの設定がある場合はエラーになる可能性があります。
フィルターフック一覧
名称 | 概要 |
---|---|
wpcf7_acceptance | フォームの受け入れを許可するかどうかを返す |
wpcf7_additional_mail | 送信先メールアドレスを追加する |
wpcf7_admin_menu_change_notice | メニューにバッチで表示する通知の数を設定する |
wpcf7_ajax_json_echo | REST API で利用する |
wpcf7_ajax_onload | REST API で利用する |
wpcf7_akismet_comment_check | akismet がコメントをスパムと判断した時の処理を追加する |
wpcf7_autop_or_not | WPCF7_AUTOP 定数を上書きする |
wpcf7_captcha_url | キャプチャの URL を上書きする |
wpcf7_collect_mail_tags | 独自のメールタグを設定する |
wpcf7_constant_contact_\ contact_post_request_builder | Constant Contact との連携で利用する |
wpcf7_constant_contact_submit | Constant Contact との連携で利用する |
wpcf7_contact_form_default_pack | フォームのテンプレートを加工する |
wpcf7_contact_form_properties | フォームのプロパティを拡張する |
wpcf7_contact_form_shortcode | 投稿に埋め込むショートコードを加工する |
wpcf7_copy | フォームのコピーを加工する |
wpcf7_default_template | 各設定項目のデフォルト値を加工する |
wpcf7_display_message | メッセージの出力を加工する |
wpcf7_editor_panels | 管理画面のパネル(タブ)を加工する |
wpcf7_flamingo_get_value | Flamingo との連携で利用する |
wpcf7_flamingo_submit_if | Flamingo との連携で利用する |
wpcf7_form_action_url | <form> タグの action 属性を加工する |
wpcf7_form_autocomplete | <form> タグの autocomplete 属性を加工する |
wpcf7_form_class_attr | <form> タグの class 属性を加工する |
wpcf7_form_elements | <form> 要素に要素を加える |
wpcf7_form_enctype | <form> タグの enctype 属性を加工する |
wpcf7_form_hidden_fields | <form> 要素に <input type="hidden"> の要素を加える |
wpcf7_form_id_attr | <form> タグの class 属性を加工する |
wpcf7_form_name_attr | <form> タグの name 属性を加工する |
wpcf7_form_novalidate | <from> タグの novalidate 属性を加工する |
wpcf7_form_response_output | 応答メッセージの出力を加工する |
wpcf7_form_tag | タグの値を加工する |
wpcf7_form_tag_data_option | 独自タグの選択肢を指定する |
wpcf7_is_date | 入力文字列が日付かどうかを返す |
wpcf7_is_email | 入力文字列がメールアドレスかどうかを返す |
wpcf7_is_number | 入力文字列が数値かどうかを返す |
wpcf7_is_tel | 入力文字列が電話番号かどうかを返す |
wpcf7_is_url | 入力文字列が URL かどうかを返す |
wpcf7_load_css | WPCF7_LOAD_CSS 定数を上書きする |
wpcf7_load_js | WPCF7_LOAD_JS 定数を上書きする |
wpcf7_log_remote_request | ログ出力内容を加工する |
wpcf7_mail_components | 送信するメールの内容を加工する |
wpcf7_mail_html_footer | HTML メールのフッタを加工する |
wpcf7_mail_html_header | HTML メールのヘツダを加工する |
wpcf7_mail_tag_replaced | メールに出力する要素を加工する |
wpcf7_mail_tag_replaced_{$type} | メールに出力する要素を加工する(type 属性単位) |
wpcf7_map_meta_cap | フォームの編集権限を上書きする |
wpcf7_messages | メッセージ文字列を加工する |
wpcf7_posted_data | 入力された要素を加工する |
wpcf7_posted_data_{$type} | 入力された要素を加工する(type 属性単位) |
wpcf7_recaptcha_actions | reCAPTCHA で利用する |
wpcf7_recaptcha_secret | reCAPTCHA のシークレットキーを上書きする |
wpcf7_recaptcha_sitekey | reCAPTCHA のサイトキーを上書きする |
wpcf7_recaptcha_threshold | reCAPTCHA のスパム判定の重み付けを上書きする |
wpcf7_recaptcha_verify_response | reCAPTCHA で人間による投稿かどうかの判定を上書きする |
wpcf7_remote_ip_addr | リモートホストの IP アドレスを上書きする |
wpcf7_skip_mail | メール送信を省略するかどうかのフラグを上書きする |
wpcf7_spam | スパム判定の結果を上書きする |
wpcf7_special_mail_tags | 特別なメールタグの値を生成する |
wpcf7_submission_is_blacklisted | ブラックリストを上書きする |
wpcf7_subscribers_only_notice | ログインユーザーのみに許可されたフォームが利用された時の警告文を上書きする |
wpcf7_support_html5 | html5 をサポートするかどうかを指定する |
wpcf7_support_html5_fallback | html5 用のフォールバック機能を有効にするかどうかを指定する |
wpcf7_upload_dir | アップロードディレクトリ情報を上書きする |
wpcf7_upload_file_name | アップロードされたファイルの名前を上書きする |
wpcf7_use_really_simple_captcha | WPCF7_USE_REALLY_SIMPLE_CAPTCHA 定数を上書きする |
wpcf7_validate | バリデーションチェックの結果を上書きする |
wpcf7_validate_configuration | WPCF7_VALIDATE_CONFIGURATION 定数を上書きする |
wpcf7_validate_{$type}” | バリデーションチェックの結果を上書きする(type 属性単位) |
wpcf7_validation_error | バリデーションチェックエラーのメッセージを上書きする |
wpcf7_verify_nonce | WPCF7_VERIFY_NONCE 定数を上書きする |
アクションフック一覧
名称 | 概要 |
---|---|
wpcf7_admin_footer | 管理画面のフッター出力時 |
wpcf7_admin_init | 管理画面へのアクセス時 |
wpcf7_admin_load | 管理サブメニューの設定後 |
wpcf7_admin_menu | 管理メニューの設定前 |
wpcf7_admin_misc_pub_section | 追加のペインの出力時 |
wpcf7_admin_notices | 管理画面に通知を表示する時 |
wpcf7_admin_warnings | 管理画面に警告を表示する時 |
wpcf7_after_create | 管理画面でフォームの設定を作成した後 |
wpcf7_after_flamingo | Flamingo との連携で利用する |
wpcf7_after_save | 保存処理の後 |
wpcf7_after_update | 管理画面でフォームの設定を更新した後 |
wpcf7_before_send_mail | メールの送信前 |
wpcf7_config_validator_validate | 管理画面の設定項目のバリデーションチェック中 |
wpcf7_contact_form | WPCF7_ContactForm クラスオブジェクトの構築後 |
wpcf7_enqueue_scripts | スクリプトのエンキュー時 |
wpcf7_enqueue_styles | スタイルシートのエンキュー時 |
wpcf7_init | 初期化時 |
wpcf7_mail_failed | メール送信の失敗時 |
wpcf7_mail_sent | メール送信の成功時 |
wpcf7_post_edit_form_tag | フォームの設定用フォームの<form> タグ出力時 |
wpcf7_save_contact_form | フォームの設定を保存する前 |
wpcf7_submit | フォーム送信時 |
wpcf7_upgrade | Contact Form 7 のアップデート時 |
まとめ
この記事を通じて、Contact Form 7のカスタムバリデーションの実装方法について学びました。カスタムバリデーションを活用することで、フォームからの入力をより効果的に制御し、ウェブサイトのユーザーエクスペリエンスを向上させることができます。カスタムバリデーションを使用する際は、具体的なユーザーのニーズに合わせて、ルールを慎重に設計することが重要です。
また、エラーメッセージは明確でユーザーフレンドリーであるべきです。このようにして、Contact Form 7を使って、より機能的で、ユーザーニーズに応えるフォームを作成しましょう。今後もこのようなカスタマイズを通じて、ウェブサイトの機能性を高め、訪問者とのコミュニケーションをよりスムーズにすることを目指してください。
ACFカスタムフィールドでの選択肢ラベルにHTMLを使用する方法
7月 30, 2024「MW WP Form」で年月日のセレクト項目を動的に生成する方法
5月 16, 2024MW WP Formに郵便番号から住所を自動入力する機能を追加する方法: ajaxzip3を活用してユーザーエクスペリエンスを向上させよう
3月 5, 2024