概要
wpcf7_config_validator_validate
フィルタは、Contact Form 7のフォーム設定の検証を行う際に使用されます。このフックは、ユーザーが送信したデータを基に入力内容の妥当性をチェックし、不正な情報が含まれていないかどうかを確認するために利用されます。具体的には、次のような機能を実装する際によく使われます。
- フォームデータのカスタムバリデーション
- 入力フィールドの制約追加
- メッセージのカスタマイズ
- 検証ルールの条件変更
- エラーメッセージの多言語対応
- 外部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 |