概要
wpcf7_validate
フィルタは、WordPressの人気プラグイン「Contact Form 7」において、フォームのバリデーションチェックの結果を上書きするために使用されます。このフィルタを活用することで、デフォルトのバリデーションルールに加えてカスタムのバリデーションを実装することが可能になります。
このフィルタは、以下のようなシナリオでよく使われます。
- ユーザーが特定のフォーマットのデータを入力するよう強制する。
- フォームの任意のフィールドにカスタムエラーメッセージを追加する。
- フォームに入力されたデータのファイルタイプを検証する。
- 数値入力の範囲チェックを行う。
- ユーザーが特定の条件を満たすか確認するための追加バリデーションを行う。
- 過去の送信内容と照らし合わせて、重複入力を防ぐ。
構文
add_filter( 'wpcf7_validate_[フィールドのタイプ]', 'my_custom_validation', 10, 2 );
パラメータ
フィールドのタイプ
: 検証したいフォームフィールドのタイプ(例: text, email 等)。my_custom_validation
: カスタムバリデーションを行う関数の名前。10
: フィルタの実行順序。2
: 渡される引数の数。
戻り値
このフィルタは、検証結果を含む配列を返します。配列にはエラーメッセージを含めることができ、これによりユーザーにフィードバックを提供します。
プラグインのバージョン
- Contact Form 7: 5.0以上
- WordPress: 4.9以上
サンプルコード
サンプルコード 1
add_filter( 'wpcf7_validate_text', 'custom_text_validation', 10, 2 );
function custom_text_validation( $result, $tags ) {
$tag = wpcf7_mail_tag_retrieve( 'your-text' ); // 'your-text'はフォームフィールド名
$submitted_value = isset( $_POST[$tag['name']] ) ? trim( $_POST[$tag['name']] ) : '';
if ( strlen( $submitted_value ) < 5 ) { // 5文字未満のチェック
$result->invalidate( $tag, "このフィールドは5文字以上必要です。" );
}
return $result;
}
このコードは、テキストフィールドが5文字未満の場合にエラーメッセージを表示します。
サンプルコード 2
add_filter( 'wpcf7_validate_email', 'custom_email_validation', 10, 2 );
function custom_email_validation( $result, $tags ) {
$tag = wpcf7_mail_tag_retrieve( 'your-email' );
$submitted_email = isset( $_POST[$tag['name']] ) ? trim( $_POST[$tag['name']] ) : '';
if ( ! filter_var( $submitted_email, FILTER_VALIDATE_EMAIL ) ) { // メールアドレスの形式チェック
$result->invalidate( $tag, "無効なメールアドレスです。" );
}
return $result;
}
このコードは、入力されたメールアドレスが有効な形式でない場合にエラーメッセージを表示します。
サンプルコード 3
add_filter( 'wpcf7_validate_tel', 'custom_tel_validation', 10, 2 );
function custom_tel_validation( $result, $tags ) {
$tag = wpcf7_mail_tag_retrieve( 'your-tel' );
$submitted_tel = isset( $_POST[$tag['name']] ) ? trim( $_POST[$tag['name']] ) : '';
if ( ! preg_match( '/^[0-9-]+$/', $submitted_tel ) ) { // 数字とハイフンのみ許可
$result->invalidate( $tag, "電話番号は数字とハイフンのみを使用してください。" );
}
return $result;
}
このコードは、電話番号フィールドに数字とハイフン以外が含まれている場合にエラーメッセージを表示します。
サンプルコード 4
add_filter( 'wpcf7_validate_radio', 'custom_radio_validation', 10, 2 );
function custom_radio_validation( $result, $tags ) {
$tag = wpcf7_mail_tag_retrieve( 'your-radio' );
if ( empty( $_POST[$tag['name']] ) ) { // ラジオボタンが選択されていない場合
$result->invalidate( $tag, "このフィールドは必須です。" );
}
return $result;
}
このコードは、ラジオボタンが選択されていない場合にエラーメッセージを表示します。
サンプルコード 5
add_filter( 'wpcf7_validate_file', 'custom_file_validation', 10, 2 );
function custom_file_validation( $result, $tags ) {
$tag = wpcf7_mail_tag_retrieve( 'your-file' );
$mime_types = array('image/jpeg', 'image/png'); // 許可するファイルタイプ
if ( isset($_FILES[$tag['name']]) && !in_array($_FILES[$tag['name']]['type'], $mime_types) ) {
$result->invalidate( $tag, "JPEGまたはPNGファイルをアップロードしてください。" );
}
return $result;
}
このコードは、指定されたファイルフィールドにJPEGまたはPNG以外のファイルがアップロードされた場合にエラーメッセージを表示します。
この関数のアクションでの使用可能性
アクション | 使用可能性 |
---|---|
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 |