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' );