MW WP Form バリデーションルールでNGワードを設定(スパムブロック)

2024年6月26日
MW WP Form バリデーションルールでNGワードを設定(スパムブロック)

目次

WordPressの「MW WP Form」プラグインを使って、お問い合わせフォームにスパム対策のバリデーションルールを追加する方法を紹介します。

スパムや営業メールの多くは、自動化されたボットやテンプレ送信が多いです。これらのボットは特定のキーワードを含むメッセージを投稿することが多いため、NGワードリストを作成し、そのキーワードを含む投稿をブロックし、対策します。

01. functions.phpへ実装

    
    
<?php
// スパム対策:特定のキーワードを含む投稿をブロック
function custom_validation_nospam($validation_rules) {
    if (!class_exists('Custom_Validation_NoSPAM')) {
        class Custom_Validation_NoSPAM extends MW_WP_Form_Abstract_Validation_Rule {
            protected $name = 'custom_nospam';

            public function rule($name, $options = []) {
                $ng_keywords = [
                    'ここにNGワードを入力してください',
                    'ここにNGワードを入力してください',
                    'ここにNGワードを入力してください',
                    'ここにNGワードを入力してください',
                    'ここにNGワードを入力してください',
                ];

                $value = $this->Data->get($name);

                if (!MWF_Functions::is_empty($value)) {
                    foreach ($ng_keywords as $ng_word) {
                        if (preg_match("/{$ng_word}/i", $value)) {
                            $defaults = array(
                                'message' => __('投稿にNGワードが含まれています。', 'mw-wp-form'),
                            );

                            $options = array_merge($defaults, $options);
                            return $options['message'];
                        }
                    }
                }
            }

            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('NoSPAM', 'mw-wp-form'); ?>
                </label>
<?php
            }
        }
    }

    $obj = new Custom_Validation_NoSPAM();
    $validation_rules[$obj->getName()] = $obj;

    return $validation_rules;
}

add_filter('mwform_validation_rules', 'custom_validation_nospam');

コードの説明

クラスの定義:
Custom_Validation_NoSPAMというクラスを定義し、MW_WP_Form_Abstract_Validation_Ruleを継承します。 このクラスのruleメソッドでは、NGワードのリストをチェックし、NGワードが含まれている場合にエラーメッセージを返します。 adminメソッドでは、管理画面に「NoSPAM」チェックボックスを追加します。 バリデーションルールの追加:
custom_validation_nospam関数で、上記クラスをバリデーションルールに追加します。 add_filterを使って、MW WP Formのバリデーションルールにこの関数をフックします。

02.「NoSPAM」のチェックボックスにチェック

「MW WP Form」のプラグイン設定画面で「バリデーションルールを追加」をクリックし、「NoSPAM」のチェックボックスにチェックを入れます。次に、バリデーションを適用する項目にメール本文の項目名を入力すると設定が有効になります。

mw-wpform-ngword

※緊急依頼の場合は【緊急】のチェックボックスにチェックを入れてください。24時間以内に担当者より折り返します。

ご質問・ご依頼はこちらから
お買い物カゴ
上部へスクロール