プラグインContact Form 7のwpcf7_config_validator_validateフィルタの使用方法・解説

概要

wpcf7_config_validator_validateフィルタは、Contact Form 7のフォーム設定の検証を行う際に使用されます。このフックは、ユーザーが送信したデータを基に入力内容の妥当性をチェックし、不正な情報が含まれていないかどうかを確認するために利用されます。具体的には、次のような機能を実装する際によく使われます。

  1. フォームデータのカスタムバリデーション
  2. 入力フィールドの制約追加
  3. メッセージのカスタマイズ
  4. 検証ルールの条件変更
  5. エラーメッセージの多言語対応
  6. 外部APIとの連携による検証

構文

add_filter( 'wpcf7_config_validator_validate', 'custom_validation_function', 10, 2 );

パラメータ

  • $result: 検証結果の配列。
  • $form_data: 送信されたフォームのデータ。

戻り値

  • 変更された検証結果の配列。

使用可能なバージョン

  • Contact Form 7: バージョン5.0以上
  • WordPress: バージョン5.0以上

サンプルコード

サンプルコード 1

add_filter( 'wpcf7_config_validator_validate', 'custom_validate_email', 10, 2 );

function custom_validate_email( $result, $form_data ) {
    if ( isset( $form_data['your-email'] ) && ! filter_var( $form_data['your-email'], FILTER_VALIDATE_EMAIL ) ) {
        $result->invalidate( 'your-email', '有効なメールアドレスを入力してください。' );
    }
    return $result;
}

このコードは、フォーム内の「your-email」というフィールドに対して、メールアドレスの形式が正しいかを検証し、不正な場合にエラーメッセージを表示します。

サンプルコード 2

add_filter( 'wpcf7_config_validator_validate', 'custom_validate_terms', 10, 2 );

function custom_validate_terms( $result, $form_data ) {
    if ( empty( $form_data['accept-terms'] ) ) {
        $result->invalidate( 'accept-terms', '利用規約に同意してください。' );
    }
    return $result;
}

このコードは、利用規約に同意するチェックボックスが未チェックの場合にエラーメッセージを表示します。

サンプルコード 3

add_filter( 'wpcf7_config_validator_validate', 'custom_validate_phone', 10, 2 );

function custom_validate_phone( $result, $form_data ) {
    if ( isset( $form_data['your-phone'] ) && ! preg_match( '/^[0-9]{10}$/', $form_data['your-phone'] ) ) {
        $result->invalidate( 'your-phone', '電話番号は10桁の数字でなければなりません。' );
    }
    return $result;
}

このコードは、電話番号が10桁の数字であることを検証し、異なる場合はエラーメッセージを表示します。

サンプルコード 4

add_filter( 'wpcf7_config_validator_validate', 'custom_validate_age', 10, 2 );

function custom_validate_age( $result, $form_data ) {
    if ( isset( $form_data['your-age'] ) && $form_data['your-age'] < 18 ) {
        $result->invalidate( 'your-age', '18歳以上でなければなりません。' );
    }
    return $result;
}

このコードは、年齢が18歳未満の場合にエラーメッセージを表示します。

サンプルコード 5

add_filter( 'wpcf7_config_validator_validate', 'custom_validate_name_length', 10, 2 );

function custom_validate_name_length( $result, $form_data ) {
    if ( isset( $form_data['your-name'] ) && strlen( $form_data['your-name'] ) < 3 ) {
        $result->invalidate( 'your-name', '名前は3文字以上でなければなりません。' );
    }
    return $result;
}

このコードは、名前の長さが3文字未満の場合にエラーメッセージを表示します。

この関数のアクションでの使用可能性

アクション 使用可能性
mu_plugin_loaded
registered_post_type
plugins_loaded
wp_roles_init
setup_theme
after_setup_theme
set_current_user
init
register_sidebar
wp_loaded
send_headers
parse_query
pre_get_posts
wp
template_redirect
get_header
wp_head

この関数について質問する


上の計算式の答えを入力してください