概要
フィルタ wpcf7_validate_{$type}
は、WordPress のプラグイン Contact Form 7 のバリデーションチェックをカスタマイズするために利用されます。{$type} には、バリデーションを適用するフィールドのタイプが入ります。このフィルタを使用することで、特定の入力フィールドのバリデーションチェックの結果を上書きしたり、追加の条件を設定したりすることができます。以下は、このフィルタがよく使われる機能の例です。
- カスタムフィールドに対するバリデーションの追加
- 既存のバリデーション条件の変更
- 特定の条件に基づくエラーメッセージの表示
- 入力フィールドの値に基づいた後処理
- 多言語対応のバリデーションルールの設定
- API 呼び出しに基づいたリアルタイムバリデーション
構文
add_filter('wpcf7_validate_{$type}', 'your_validation_function', 10, 2);
パラメータ
{$type}
: バリデーションを適用するフォームフィールドの種類(例:text, email など)。your_validation_function
: バリデーションチェックを行うカスタム関数の名前。10
: フィルタの優先度(デフォルトは 10)。2
: 引数の数(通常は 2 で、フォームのデータとエラーの配列が渡されます)。
戻り値
このフィルタは、エラーがある場合はエラーメッセージの配列、なければ元のデータを返します。
使用可能なバージョン
- Contact Form 7 バージョン: 5.0 以上
- WordPress バージョン: 4.0 以上
サンプルコード
サンプルコード1: カスタムバリデーション
add_filter('wpcf7_validate_text', 'custom_text_validation', 10, 2);
function custom_text_validation($result, $tags) {
$submitted_data = WPCF7_Submission::get_instance();
if ($submitted_data) {
$text = $submitted_data->get_posted_data('your-text');
if (empty($text) || strlen($text) < 5) {
$result->invalidate($tags[0], 'テキストは5文字以上である必要があります。');
}
}
return $result;
}
このコードは、テキストフィールドが5文字未満または空の場合にエラーメッセージを表示します。
サンプルコード2: メールの形式チェック
add_filter('wpcf7_validate_email', 'custom_email_validation', 10, 2);
function custom_email_validation($result, $tags) {
$submitted_data = WPCF7_Submission::get_instance();
if ($submitted_data) {
$email = $submitted_data->get_posted_data('your-email');
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$result->invalidate($tags[0], '正しいメールアドレスを入力してください。');
}
}
return $result;
}
このコードは、メールフィールドの内容が無効な形式の場合にエラーメッセージを提供します。
サンプルコード3: 数字フィールドのチェック
add_filter('wpcf7_validate_number', 'custom_number_validation', 10, 2);
function custom_number_validation($result, $tags) {
$submitted_data = WPCF7_Submission::get_instance();
if ($submitted_data) {
$number = $submitted_data->get_posted_data('your-number');
if (!is_numeric($number) || $number < 0) {
$result->invalidate($tags[0], '正の数を入力してください。');
}
}
return $result;
}
このコードは、数字フィールドに不正な値を入力された場合にエラーメッセージを表示します。
サンプルコード4: カスタムエラーメッセージの追加
add_filter('wpcf7_validate_text', 'custom_error_message', 10, 2);
function custom_error_message($result, $tags) {
$submitted_data = WPCF7_Submission::get_instance();
if ($submitted_data) {
$text = $submitted_data->get_posted_data('your-text');
if ($text !== 'expected value') {
$result->invalidate($tags[0], '入力値が期待される値ではありません。');
}
}
return $result;
}
このコードは、特定の値以外が入力された場合にカスタムエラーメッセージを表示します。
サンプルコード5: 日付フィールドのフォーマットチェック
add_filter('wpcf7_validate_date', 'custom_date_validation', 10, 2);
function custom_date_validation($result, $tags) {
$submitted_data = WPCF7_Submission::get_instance();
if ($submitted_data) {
$date = $submitted_data->get_posted_data('your-date');
if (!DateTime::createFromFormat('Y-m-d', $date)) {
$result->invalidate($tags[0], '正しい日付の形式(YYYY-MM-DD)で入力してください。');
}
}
return $result;
}
このコードは、日付フィールドが指定の形式(YYYY-MM-DD)でない場合にエラーメッセージを表示します。
この関数のアクションでの使用可能性
アクション名 | 使用可能性 |
---|---|
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 |
この表は、特定のアクションで wpcf7_validate_{$type}
フィルタが使用できるかどうかを示しています。