TAG
contactorm7で日本語入力のみに制限する方法
contactorm7で日本語入力のみに制限する方法をメモ
functions.phpに
function wpcf7_validate_mb_char( $result, $tag ) { $field_name = 'your-message'; //チェックしたいフォームフィールド名 $value = str_replace(array("\r", "\n", ' ', ' '), '', $_POST[$field_name]); //改行とスペースを取り除く $min_rate = 50; //(%)最小日本語文字数の割合(これ以上でなければエラー) $str_l = mb_strlen($value , "UTF-8"); // 文字数取得(ダブルクオーテーション必須) $str_w = mb_strwidth($value, "UTF-8"); // 文字幅(半角1、全角2でカウント) $str_mb = $str_w - $str_l; // 日本語(マルチバイト)の文字数取得 $str_mb_rate = ($str_mb / $str_l) * 100; // 日本語文字数の割合を計算 if (!empty($value)) { if ($str_mb_rate < $min_rate) { $result['valid'] = false; $result['reason'] = array($field_name => '日本語で入力してください。'); } } return $result; } add_filter( 'wpcf7_validate', 'wpcf7_validate_mb_char', 10, 2 );
でOK
your-messageの部分はcontactform7で設定しているフィールド名を指定します。