サポート » プラグイン » Contact Form 7の日付バリデーションを治したい。

  • 解決済 gogoweb

    (@gogoweb)


    Contact Form 7のバージョンを最新にしたところ新しくhtml5がサポートされていました。
    そこで今まで日付を入力してもらっていた場所をdateに変更したのですが、
    クローム等カレンダーが表示されるブラウザでは問題ないのですが、firefox等カレンダーが表示されないブラウザでは「日付が正しくありません」とエラーが返ってしまいます。
    調べたところ、 2013/00/00 のような形式で登録してもらいたいのに、dateのバリデーションが2013-00-00の様になっているようです。
    このままでは多少不便なのでバリデーションを変更したいのですがどこかで設定できるのでしょうか?それとも本体を弄る必要があるのでしょうか?

1件の返信を表示中 - 1 - 1件目 (全1件中)
  • トピック投稿者 gogoweb

    (@gogoweb)

    自己解決しました。
    コンタクトフォームを調べたところwpcf7_is_dateというフィルターフックが用意されていました。
    ここにいずれのようなコードを書いたところ希望通りの動作をしました。

    function wpcf7_is_date_new( $result,$date ) {
    	$result = preg_match( '/^([0-9]{4,})[-\/]([0-9]{2})[-\/]([0-9]{2})$/', $date, $matches );
    
    	if ( $result )
    		$result = checkdate( $matches[2], $matches[3], $matches[1] );
    
    	return $result;
    }
    add_filter( 'wpcf7_is_date', 'wpcf7_is_date_new', 10,2 );

    しかしこれだと 2013-04/01 でもマッチしてしまうんですよね。
    マッチ条件はそのままで、preg_match前に/を-に置換したほうがスマートでしょうか?

1件の返信を表示中 - 1 - 1件目 (全1件中)
  • トピック「Contact Form 7の日付バリデーションを治したい。」には新たに返信することはできません。