MW WP Formの独自バリデーション追加方法

MW WP Formの独自バリデーション追加方法

WordPressのお問合せフォームの有名なプラグイン『MW WP Form』は、そのままで管理画面からバリデーションの設定ができますが、ちょっとカスタマイズしたいとなったときに、自作のバリデーションを追加する方法です。

プラグイン内のバリデーションルールフォルダの中をいじってもできますが、プラグインを更新した際に記述が消えてしまうので、functions.phpにフィルターフックを使って書きます。

管理画面に、作成したバリデーションを選択肢として表示させる仕様

デフォルトで、管理画面のMW WP Formの設定画面にて、バリデーションの種類を選択できるようになっていますが、そこに選択肢のひとつとして追加した独自のバリデーションを表示させて、選べる仕様の記述です。

mwform_validation_rulesはプラグインが用意しているフック

/* MW WP From 自作バリデーション */

function mwform_validation_rule_test( $validation_rules ) {
	if ( ! class_exists("MW_Validation_Rule_Test") ) {
		class MW_Validation_Rule_Test extends MW_WP_Form_Abstract_Validation_Rule {
			/**
			 * バリデーションルール名を指定
			 *
			 * @var string
			 */
			protected $name = 'test';
			/**
			 * バリデーションチェック
			 *
			 * @param string $key name属性
			 * @param array  $option
			 *
			 * @return string エラーメッセージ
			 */
			public function rule( $key, array $options = array() ) {
				// 追加したいバリデーションの処理
			}
			/**
			 * 設定パネルに追加
			 *
			 * @param int   $key   バリデーションルールセットの識別番号
			 * @param array $value バリデーションルールセットの内容
			 */
			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( 'test', 'mw-wp-form' ); ?>
				</label>
				<?php
			}
		}
	}
	$instance = new MW_Validation_Rule_Test();
	$validation_rules[$instance->getName()] = $instance;
	return $validation_rules;
}
add_filter( 'mwform_validation_rules', 'mwform_validation_rule_test' );