PR

MW WP Formの半角英数に半角スペースも許可する改造

WordPressで問い合わせフォームを作るときの定番プラグインの二大巨頭といえば個人的にはContact Form 7とMW WP Formです。
が、送信完了画面のカスタムのし易さと、確認画面が標準で搭載されていることから、私は案件ではよくMW WP Formを採用しています。

さて今回はその入力フォームのバリデーションルールに「半角英字」というルールがあるのですが、こちらを選択すると半角スペースが入るとエラーになるというのが標準の仕様となっております。

英字で型式番号などを入力するのなら良いのでしょうが、英字表記の住所や名前を入れたいときは半角スペースも許容したいですよね?と、言うことでカスタムしたのでカスタムの仕方を書いておきます。
ググってもズバリのコードはなかったので(あと本記事の内容がクラウドワークスで5000~10000円で発注が出ていました)。

以下のコードをテーマのfunctions.phpに書き加えることで半角スペース許可が可能です。
環境に応じて書き換えないといけないところは各自コメントを参考にしてください。

function coop_applicate_validation_rule($Validation, $data) {
    //ここの「name_roma」は英数入力にしたい入力項目の名前に変更してください
    $Validation->set_rule('name_roma', 'alpha_space');

    return $Validation;
}
//ここの「7」は設定したいフォームのIDに変更してください
add_filter('mwform_validation_mw-wp-form-7', 'coop_applicate_validation_rule', 10, 2);

function my_validation_rule( $validation_rules, $key ) {
    $validation_rules['alpha_space'] = new MW_WP_Form_Validation_Rule_Alpha_Space($key);
    return $validation_rules;
}
add_filter('mwform_validation_rules', 'my_validation_rule', 10, 2);

class MW_WP_Form_Validation_Rule_Alpha_Space extends MW_WP_Form_Abstract_Validation_Rule
{
    protected $name = 'alpha_space';

    public function rule( $key, array $options = []) {
        $value = $this->Data->get( $key );
        if ( !MWF_Functions::is_empty( $value ) ) {
	    $defaults = [];
            if ( preg_match("/\A[a-zA-Z\s]+\z/", $value) === 0 ) {
                $message_str = "半角英字で入力してください";
                
                $defaults = ['message' => $message_str];
            }
            $options = array_merge( $defaults, $options );
            return $options['message'];
        }
    }

    public function admin( $key, $value ) {}
}

WordPressのテーマ作成やカスタムのお仕事も一応受けています(1万でやるかはわかりませんが)。
もしくはコメントかツイッターDMで聞いてもらえれば、暇だったらタダで回答するかもしれません。

コメント

タイトルとURLをコピーしました