概要
wpcf7_validate_configuration
フィルタは、WordPressのContact Form 7プラグインで使用されるフィルタで、フォームの設定が正しいかどうかを検証する際に使用されます。このフィルタを使用することで、フォームのバリデーションルールをカスタマイズすることができます。一般的な使用例には次のようなものがあります。
- カスタムバリデーションの追加
- 特定の条件に基づくフィールドの必須設定
- エラーメッセージのカスタマイズ
- フォームの動的な変更
- 既存のフィールドの検証ルールの拡張
- 条件付きロジックの実装
構文
add_filter('wpcf7_validate_configuration', 'your_custom_validation_function', 10, 2);
パラメータ
$result
(array) フォームの検証結果。$contact_form
(WPCF7_ContactForm) 対象のContact Form 7のインスタンス。
戻り値
- 認証が成功した場合は、元の結果を返し、失敗した場合はエラーメッセージを含むカスタム結果を返します。
利用可能なバージョン
- Contact Form 7: バージョン 5.0以降
- WordPress: バージョン 4.5以降
この関数のアクションでの使用可能性
アクション | 使用可能性 |
---|---|
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 |
サンプルコード
サンプル1: カスタムバリデーションの追加
このコードは、特定のフィールドが特定の条件を満たしているかどうかを検証します。
add_filter('wpcf7_validate_configuration', 'custom_validation', 10, 2);
function custom_validation($result, $contact_form) {
$submission = WPCF7_Submission::get_instance();
if ($submission) {
$data = $submission->get_posted_data();
if (empty($data['your-field-name'])) {
$result->invalidate('your-field-name', 'このフィールドは必須です。');
}
}
return $result;
}
// 出典: https://contactform7.com/
サンプル2: エラーメッセージのカスタマイズ
このコードは、既存のエラーメッセージをカスタマイズします。
add_filter('wpcf7_validate_configuration', 'custom_error_message', 10, 2);
function custom_error_message($result, $contact_form) {
if ($result->is_valid()) {
return $result;
} else {
$result->invalidate('your-field-name', 'カスタムエラーメッセージを表示します。');
}
return $result;
}
// 出典: https://contactform7.com/
サンプル3: 動的な必須フィールド
このコードは、特定の条件に基づいて必須フィールドを設定します。
add_filter('wpcf7_validate_configuration', 'dynamic_required_field', 10, 2);
function dynamic_required_field($result, $contact_form) {
$submission = WPCF7_Submission::get_instance();
if ($submission) {
$data = $submission->get_posted_data();
if ($data['checkbox-field-name'] == 'YES' && empty($data['conditional-field-name'])) {
$result->invalidate('conditional-field-name', 'このフィールドは必須です。');
}
}
return $result;
}
// 出典: https://contactform7.com/
サンプル4: フォームフィールドの検証ルールの拡張
このコードは、フィールドの値が特定の形式であるかどうかを確認します。
add_filter('wpcf7_validate_configuration', 'extend_validation_rule', 10, 2);
function extend_validation_rule($result, $contact_form) {
$submission = WPCF7_Submission::get_instance();
if ($submission) {
$data = $submission->get_posted_data();
if (!preg_match('/^[0-9]+$/', $data['number-field'])) {
$result->invalidate('number-field', '有効な数字を入力してください。');
}
}
return $result;
}
// 出典: https://contactform7.com/
サンプル5: 条件付きロジックを実装
このコードは、他のフィールドの値に基づく条件付きバリデーションを実装します。
add_filter('wpcf7_validate_configuration', 'conditional_logic', 10, 2);
function conditional_logic($result, $contact_form) {
$submission = WPCF7_Submission::get_instance();
if ($submission) {
$data = $submission->get_posted_data();
if ($data['select-field'] == '特定の選択肢' && empty($data['dependent-field'])) {
$result->invalidate('dependent-field', 'フィールドはこの選択肢が選ばれた場合必須です。');
}
}
return $result;
}
// 出典: https://contactform7.com/