mwform_validation_mw-wp-form-xxxのフックも第2引数で$dataが取得できます。
http://plugins.2inc.org/mw-wp-form/manual/filter-hook/mwform_validation/
下記のような感じでできませんか?
function my_validation_rule( $Validation, $data ) {
if ( $data['check'] === 'hoge' ) {
$Validation->setRule( 'fuga', 'noEmpty' );
}
return $Validation;
}
add_filter( 'mwform_validation_mw-wp-form-xxx', 'my_validation_rule', 10, 2 );
ご回答、ありがとうございます。
テキストボックスの場合では可能でしたが、チェックボックスで特定の選択肢が選択された場合、というような条件での記述方法がわかりませんでした。
[mwform_checkbox name=”アンケート” children=”A,B,C,D”]というチェックボックスに対して、”C”が選ばれたときにvalidationを追加する、というようなケースです。
よろしくお願い致します。
それからmwform_validation_mw-wp-form-xxxのフックの中で、$dataの値を取得して、エラーメッセージにセットしようとしたところ、上手くいきませんでした。このような処理はできないのでしょうか?
$v->setRule( ‘その他1’, ‘noEmpty’, array( ‘message’ => $data[‘check’]));
というような書き方です。
ご回答、よろしくお願い致します。
こんな感じでどうでしょう?
function my_validation_rule( $Validation, $data ) {
if ( isset( $data['アンケート']['data'] ) && is_array( $data['アンケート']['data'] ) ) {
if ( in_array( 'C', $data['アンケート']['data'] ) ) {
$Validation->setRule( 'その他1', 'noEmpty', array(
'message' => implode( ', ', $data['アンケート']['data'] ),
) );
}
}
return $Validation;
}
add_filter( 'mwform_validation_mw-wp-form-xxx', 'my_validation_rule', 10, 2 );
注意点として、フックで「その他1」に対して必須チェックを有効にする場合、管理画面では「その他1」に対して必須チェックを有効にしてはいけません。
回答ありがとうございます。
どうも$data自体の取得ができていないようです。
コーディングの方法はわかりました。
しかし、上記を参考にやってみましたが上手くいきません。
以下のようなフィルターフックを設定してみました。
function mwform_validation_10049( $v, $data ) {
if ( isset($data)){
$v->setRule( 'テキスト', 'noEmpty', array('message' => 'True'));
} else {
$v->setRule( 'テキスト', 'noEmpty', array('message' => 'false'));
}
return $v;
}
add_filter( 'mwform_validation_mw-wp-form-10049', 'mwform_validation_10049' );
結果は「false」が表示されます。
MW WP Form のバージョンは最新1.4.0です。
ご回答、よろしくお願い致します。
上のコメントは間違いです。
すいません、add_filterが間違っているという初歩的なミスでした。
動作確認中です。
無事希望通りのバリデーションが作成できました。
アドバイス、ありがとうございました。