お問い合わせフォームでおそらく最も利用されているであろうプラグイン「Contact Form 7」で、特定の文字列が入力欄に含まれていない場合に送信エラーを出して、スパム対策や間違った内容を送信させない方法です。
例えば、URLフォームでhttps://alfa-tools.net/img01.jpgのように画像形式でない場合に送信できないようにしたり、フォームの前に「スパム防止のためテキスト欄には「確認済み」の文字列を含めてください」のように書いておき、この文字列が含まれない場合は送信できなくしたりといった使い方も可能です。
functions.phpに追記するコード
子テーマのfunctions.phpに記述してください。親テーマに記述すると、テーマがアップデートされると上書きされてしまいます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
// Contact Form 7 文字制御 add_filter('wpcf7_validate_url', 'wpcf7_validate_custom_fields', 11, 2); add_filter('wpcf7_validate_url*', 'wpcf7_validate_custom_fields', 11, 2); function wpcf7_validate_custom_fields($result, $tag) { $tag = new WPCF7_Shortcode($tag); $name = $tag->name; $value = isset($_POST[$name]) ? trim(wp_unslash(strtr((string) $_POST[$name], "\n", " "))) : ""; // "url-962" の場合 if ($name === "url-962") { // 入力されたURLをカンマで分割 $urls = explode(',', $value); foreach ($urls as $url) { $url = trim($url); // スペースの除去 // 指定された拡張子がURLに含まれているか確認 if (!preg_match("/\.(jpg|jpeg|webp|png)$/i", $url)) { $result->invalidate($tag, "正しい画像URLを入力してください。URLの末尾はjpg,png,webpである必要があります。"); break; // 一つでも条件に一致しないURLがあればエラーを出してループを抜ける } } } return $result; } |
上記のコードはurl-962というURL入力フォームの例です。フォームは以下のような形式になっているので、text-223であればurl-962をtext-223に変更すればそのフォームに適用されます。
<label> お名前
[text* text-223] </label>
単純に特定の文字列が含まれる場合に送信できなくしたい場合
これは特にコードの修正や追記は不要で、WordPressのデフォルトの機能で対応可能です。管理画面(ダッシュボード)に入り、左側のメニューから「設定」→「ディスカッション」の中にある「コメント内で許可されないキーワード」に迷惑な単語を登録しましょう。
例えば「広告/収益/弊社/CPM/CPC/御社/売り上げ」のような文字列を入れておけば、広告業者からの営業メールも弾くことができます。
コメント