wp-content/plugins/mw-wp-form/classes/validation-rules/class.url.php
というファイルがある。これはURLを入力してほしい時のルールである。
単純に考えて、これの条件を逆にすればURL禁止ができる。
class.url.phpをコピーして、class.nourl.php とする。
クラス名を変更: Urlの手前にnoをつけた
class MW_WP_Form_Validation_Rule_noUrl extends MW_WP_Form_Abstract_Validation_Rule {
nameも
protected $name = 'nourl';
条件に ! をつけ、 ^ を外した。メッセージを相応しいものに書き換える。
if (! preg_match( '/https{0,1}:\/\/[^\/]+\.[^\.]+/', $value ) ) {
'message' => __( 'URL の投稿は禁止です.', 'mw-wp-form' ),
'URL'を'noURL'に変更
<label><input type="checkbox" <?php checked( $value[ $this->get_name() ], 1 ); ?> name="<?php echo MWF_Config::NAME; ?>[validation][<?php echo $key; ?>][<?php echo esc_attr( $this->get_name() ); ?>]" value="1" /><?php echo esc_html_x( 'noURL', 'validatioin', 'mw-wp-form' ); ?></label>
そうすると、WordpressのMW WP Formのバリデーションルールの中にこれが現れるのでチェックを入れる。
エラーの時、該当箇所までスクロールしてほしいので、
wp-content/plugins/mw-wp-form/js/form.js
の最後の } ); の手前に下記を挿入。
var e = $('.error'); if ( e.length > 0 ) { var position = e[0].parentNode.offsetTop - 100; var prop = {scrollTop:position}; $('body,html').delay(200).animate(prop, 600, 'swing'); }