MW WP Formで自作のバリデーションを作成する方法

スポンサーリンク

MW WP Formで自作のバリデーションを作成する方法

 

WordPressのプラグインに『MW WP Form』という簡単に「お問い合わせフォーム」を作成できるプラグインがあります。

このプラグインはデフォルトでいくつかの便利な「バリデーション」が備わっていますが、複雑な処理はカスタマイズを行わなければできません。

そこで、今回は自作バリデーションの作成方法をご紹介します。

 

スポンサーリンク

バリデーションとは?

 

バリデーションとは、入力されたデータが、あるいはプログラミング言語やマークアップ言語の記述が、規定された文法に即して、または要求された仕様にそって、適切に記述されているかどうかを検証することである。

引用:バリデーションとは (validation): – IT用語辞典バイナリ

 

今回の場合は、フォームに入力された値がフォームの内容にあっているかどうかをチェックすることです。

例えば、電話番号を入力するフォームには半角数字とハイフン以外の値が入力された場合はエラーメッセージを表示させます。

 

MW WP Formで自作バリデーションを作成する

MW WP Formで自作バリデーションを作成する

 

作成する場所

 

自作のバリデーションを作成するためには、PHPのコードを追加しなければいけません。

そのコードを追加する場所は、

  • /wordpress/wp-content/plugins/mw-wp-form/classes/validation-rules
  • /wordpress/wp-content/themes/適用しているテーマのフォルダ/functions.php

の二通りあります。

 

/wordpress/wp-content/plugins/mw-wp-form/classes/validation-rules

の場合は、配下に「class.~.php」という名前で新規のファイルを作成します。

この方法は、使用しているテーマを変更しても適用されます

 

/wordpress/wp-content/themes/適用しているテーマのフォルダ/functions.php

の場合は、テーマの「functions.php」に追記していきます。

この方法は、使用しているテーマを変更すると使用できなくなります

 

今回は、後者の「/wordpress/wp-content/themes/適用しているテーマのフォルダ/functions.php」に追記していく方法を説明します。

前者の場合は新規に追加するといっても、プラグイン自体のファイルをいじることになるのであまりよろしくないのでは?という感じです。

 

 自作バリデーションを作成する

 

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

 

上記のコードを「functions.php」追加してください。

「test」「Test」の部分は、作成するバリデーションにあった名前を自身でつけてください。

 

// 追加したいバリデーションの処理」の個所に処理を書き足せば完成です。

 

作成例とバリデーションの設定方法

 

public function rule( $key, array $options = array() ) {
    $value = $this->Data->get( $key );
    if ( ! MWF_Functions::is_empty( $value ) ) {
        if ( $value != "てすと" ) {
            $defaults = array(
                'message' => __( '「てすと」と入力してください', 'mw-wp-form' ),
            );
            $options  = array_merge( $defaults, $options );
            return $options['message'];
        }
    }
}

※「rule」部分のみ

 

入力された値が「てすと」ではなかったときに、エラーメッセージを出力する適当なバリデーションを作成しました。

これを設定していきます。

 

自作したバリデーションの項目が追加されます

といっても簡単で、MW WP Fromのバリデーションを設定する項目に自作したバリデーションの項目が追加されます

それを適応すればよいだけです。

 

バリデーション例

このような感じになります。

 

まとめ

 

MW WP From」の自作バリデーションを作成する方法をご紹介しました。

MW WP Formはデフォルトで便利なバリデーションが実装されていますが、少し複雑なものは自作する必要があります。

参考にしてみてください。

 

コメント

  1. かぼちゃ より:

    とてもわかりやすくて、問題が解決しました!
    特に「作成例とバリデーションの設定方法」が助かりました。
    やり方を書いてあるサイトは多いのですが、作成例がないとどうすればいいか結局わからないことが多いので、具体的に書かれていて大変ありがたいです。
    ありがとうございます。

    • nekomi より:

      問題解決してよかったです!
      自分も作成するときに調べまくったのですが、いまいち分からなくて時間かかっちゃいましたw

タイトルとURLをコピーしました