コンピュータや音楽の事書いてます

MW_WP_Form にURL投稿禁止機能をつける

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