概要
wpcf7_spam
フィルタは、WordPress の Contact Form 7 プラグインでスパム判定を操作するために使用されます。このフィルタを使うことで、スパム判定の結果を上書きし、特定の条件でスパムとみなされているメッセージを正常なメッセージとして扱うことができます。
このフィルタは、さまざまな機能を実装する際によく使用されます。以下はその例です:
- 特定のユーザーからのメッセージを常に受信する。
- 特定の条件に合致するメッセージをスパムから除外する。
- カスタムフィールドの値に基づいてスパム判定を行う。
- スパム問い合わせのレポートを作成する際に、特定の条件で上書きする。
- 環境に応じたスパムフィルタの調整を行う。
- 特定の IP アドレスからのメッセージを受信するための例外処理。
構文
add_filter('wpcf7_spam', 'custom_wpcf7_spam_filter', 10, 2);
パラメータ
$spam
: スパム判定の結果(true または false)。$contact_form
: 現在のコンタクトフォームオブジェクトのインスタンス。
戻り値
- 上書きしたスパム判定の結果(true または false)。
使用可能なプラグイン Contact Form 7 のバージョン
- 5.0 以降。
使用可能な WordPress のバージョン
- 5.0 以降。
この関数のアクションでの使用可能性
アクション | 使用例 |
---|---|
mu_plugin_loaded | |
registered_post_type | |
plugins_loaded | |
wp_roles_init | |
setup_theme | |
after_setup_theme | |
set_current_user | |
init | 〇 |
register_sidebar | |
wp_loaded | 〇 |
send_headers | |
parse_query | |
pre_get_posts | |
wp | |
template_redirect | |
get_header | |
wp_head |
サンプルコード
サンプルコード 1
add_filter('wpcf7_spam', function($spam, $contact_form) {
if (isset($_POST['user_email']) && $_POST['user_email'] === 'allow@example.com') {
return false; // 特定のメールアドレスを持つユーザーはスパムとみなさない
}
return $spam;
});
説明: メールアドレスが特定のものであれば、そのメッセージをスパムとして扱わないように設定します。
サンプルコード 2
add_filter('wpcf7_spam', function($spam, $contact_form) {
if (strpos($_POST['message'], 'non-spam keyword') !== false) {
return false; // メッセージ内に特定のキーワードがある場合はスパムとみなさない
}
return $spam;
});
説明: メッセージの内容に特定のキーワードが含まれている場合、そのメッセージをスパムとして扱わないようにします。
サンプルコード 3
add_filter('wpcf7_spam', function($spam, $contact_form) {
$user_ip = $_SERVER['REMOTE_ADDR'];
if ($user_ip === '192.168.1.1') {
return false; // 特定の IP アドレスからのメッセージはスパムではないと判断
}
return $spam;
});
説明: 特定の IP アドレスからのメッセージをスパムとして扱わないように設定しています。
サンプルコード 4
add_filter('wpcf7_spam', function($spam, $contact_form) {
// 環境に応じてスパム判定を変更
if (defined('WP_ENV') && WP_ENV === 'development') {
return false; // 開発環境ではすべてのメッセージをスパムとして扱わない
}
return $spam;
});
説明: 開発環境の場合は、すべてのメッセージをスパムではないと判断する設定です。
サンプルコード 5
add_filter('wpcf7_spam', function($spam, $contact_form) {
$content_length = strlen($_POST['message']);
if ($content_length < 10) {
return false; // メッセージが短すぎる場合はスパムではないと判断
}
return $spam;
});
説明: メッセージが特定の長さ未満の場合にはスパムとして扱わないようにします。