目次
< 記事一覧

【お問い合わせ】NGワードでのバリデーションとIPアドレスチェックを追加【フォーム】

WPでfunctions.phpに入れることで、指定したNGワードが入っている場合、バリデーションによって、先に進めなくするもの。
使用するには、以下の2つのプラグインを入れる必要があります。

 ・MW WP Form
 ・Throws SPAM Away

<?php
/*
 * $Validation::set_ruleの引数は name属性値, バリデーション名, オプション
 */
function my_validation_mw( $Validation, $data ) {

        // set_ruleの引数は name属性 , バリデーション名。
    $Validation->set_rule( 'contact', 'ngwords' );

    return $Validation;
}
// mwform_validation_mw-wp-form-xxx の xxx は MW WP Formで作成したフォームのIDを入れること
add_filter( 'mwform_validation_mw-wp-form-540', 'my_validation_mw', 10, 2 );

// バリデーションルール設定
function my_validation_rule( $validation_rules, $key ) {

    $validation_rules['ngwords'] = new MW_WP_Form_Validation_Rule_Ngwords( $key );
    return $validation_rules;
}

add_filter( 'mwform_validation_rules', 'my_validation_rule', 10, 2 );

class MW_WP_Form_Validation_Rule_Ngwords extends MW_WP_Form_Abstract_Validation_Rule {

    protected $name = 'ngwords';

    public function rule( $key, array $options = array() ) {
        include_once( WP_PLUGIN_DIR.'/throws-spam-away/throws_spam_away.class.php');

        $throwsSpamAway = new ThrowsSpamAway();

        $args = array(
              'post_id' => NULL,
              'tsa_on_flg' => 0,    // 日本語利用していなくても可:0、日本語利用必須は「1」
              // 下の行がなければThrows SPAM Awayで設定されたNGワードが禁止文字として有効になる。
              'tsa_ng_keywords' =>  "fuck,騒音,クレーム,報道"    // NGワード指定(カンマ区切りでいくつでも可)
            );
        $value = $this->Data->get( $key );
        $chk_result = $throwsSpamAway->validate_comment( "", $value, $args);
        if ( !MWF_Functions::is_empty( $value ) ) {

            // IPアドレスチェック
            $ip = $_SERVER['REMOTE_ADDR'];
            // ip_checkでの判定はThrows SPAM Awayの設定画面で登録されているIPアドレスにあればNG。
            $chk_ip = $throwsSpamAway->ip_check( $ip );
            if ( ! $chk_ip ) {
                // 不正IPはそのままリダイレクトさせたり出来ます。
                header( 'Location: https://xxxxxxx.co.jp' ); // URLが入る。
                die;
            }

            if ( !$chk_result ) {
                $error_type = $throwsSpamAway->error_type;
                $message_str = "";
                switch ( $error_type ) {
                    case "ng_word":
                        $message_str = "NGキーワードが含まれているため送信できません ";
                        break;
                    default:
                        $message_str = "エラーが発生しました:".$error_type;
                }
                $defaults = array(
                    'message' => $message_str
                );
            }
            $options = array_merge( $defaults, $options );
            return $options['message'];
        }
    }

    /**
     * 設定パネルに追加
     *
     * @param numeric $key バリデーションルールセットの識別番号
     * @param array $value バリデーションルールセットの内容
     */
    public function admin( $key, $value ) {
    }
}

  

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です