LinkStory Wiki
【お問い合わせ】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 ) {
}
}