MW WP FORM 入力エラーチェックを付ける


スポンサーリンク

MW WP FORM は、結構いろいろできるワードプレスのプラグインです。

特にやりたくなるのが、入力エラーチェックを付ける、それと計算させるなどですね?

とりあえず、このページでは、入力エラーチェックを付けてみます。



MW WP FORM アクションフック


MW WP FORM の アクションフック を使ってバリデーションルールを追加します。

  1. オリジナルのバリデーションルールを追加する
  2. オリジナルのバリデーションルールを項目に割り付ける
  3. オリジナルのバリデーションルールでデータをチェックしてエラーの切り分けをする


必要なものは
「バリデーションルールを設定」
「バリデーションルール入力内容チェック」

function.php にバリデーションルールを設定、入力検査をするモジュールを追加します。
function モジュール名( $validation_rules ) {
	if ( ! class_exists("クラス名") ) {
		class クラス名 MW_WP_Form_Abstract_Validation_Rule {
			/**
			 * バリデーションルール名を指定
			 *
			 */
			protected $name = 'バリデーションルールの名前';
			/**
			 * バリデーションチェック
			 */
			public function rule( $key, array $options = array() ) {
				$item_count_name = "item_count";
				$item_value_name = "item_value";
				$item_count_value= $this->Data->get($item_count_name);
				$item_value_value= $this->Data->get($item_value_name);
				if( $item_value_value != '' ){
					if( $item_count_value == '' || $item_count_value == 0){
						$defaults = array(
							'message'=>__( '数量が入力されていません','mw-wp-form'),
						);
						$options  = array_merge( $defaults, $options );
						return $options['message'];
					}
				}
			}
			/**
			 * 設定パネルに追加
			 */
			public function admin( $key, $value ) {
				?>
				<label>
					<input type="checkbox" <?php checked( $value[ $this->getName() ], 1 ); ?>; name="<?php echo MWF_Config::NAME; ?>[validation][<?php echo $key; ?>][<?php echo esc_attr( $this->getName() ); ?>]" value="1" />
					<php esc_html_e( 'バリデーションルール表示名', 'mw-wp-form' ); ?>
				</label>
				<?php
			}
		}
	}
	$instance = new クラス名();
	$validation_rules[$instance->getName()] = $instance;
	return $validation_rules;
}
add_filter( 'mwform_validation_rules', 'モジュール名' );

モジュール名
クラス名
バリデーション名
バリデーション表示名

の4つを差し替えて、実際のエラーチェックを記述します。
上の例では、こんな感じで商品を選択してあるのに数量が入力されていない場合にエラーにします。



MW WP FORM でバリデーションルールを設定する


「バリデーションを適用する項目」を入力して(MW WP FORM では、これが手間。なんでこういう仕様にしたんだろう?)、オリジナルのバリデーションルールにチェックを入れます。


MW WP FORM 入力エラーチェックを付ける方法のまとめ


MW WP FORM は、いろいろとできるのはわかるんですけど、サンプルが少なすぎて調べながらやるにもすごく大変。

MW WP FORM のマニュアルでも、バリデーションルールの追加のサンプルは、使い物にならないサンプルが掲載されていて悩みます。

ある程度プログラムが読めるなら追跡/想像で書けますけどね・・・

今回記事にしたのは、エラーチェックのモジュールのひな形は見つかった。

でも、入力されたデータはどうやって取り込むんだ?から始まりました。

実際に書いて、使っているモジュールを引っ張っていますので、あなたの参考になれば幸いです。


スポンサーリンク