プラグインContact Form 7のwpcf7_akismet_comment_checkフィルタの使用方法・解説

概要

wpcf7_akismet_comment_check は、WordPress の Contact Form 7 プラグインにおいて、スパムコメントを検出するために Akismet を利用するためのフィルタです。このフィルタを利用することで、フォームに送信されたデータがスパムかどうかをチェックし、不正な内容を排除することができます。特にこのフィルタは以下のような機能を実装する際によく使用されます。

  1. スパムコメントの自動検出
  2. ユーザーからのフィードバック収集におけるスパム防止
  3. フォームの信頼性向上
  4. フォーム送信前のデータ検証
  5. ログのトレースの効率化
  6. ユーザー体験を損なわないスパム対策

構文

add_filter('wpcf7_akismet_comment_check', 'your_custom_function', 10, 2);

パラメータ

  • $result: Akismet のスパムチェックの結果(boolean)。
  • $submission: フォームの送信データ。

戻り値

  • boolean:スパムである場合は true、そうでない場合は false

使用可能なプラグインバージョン

  • Contact Form 7: 5.0以上

使用可能な WordPress バージョン

  • WordPress: 4.7以上

この関数のアクションでの使用可能性

アクション 使用可能性
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_akismet_comment_check', 'custom_akismet_check', 10, 2);

function custom_akismet_check($result, $submission) {
    if (strpos($submission->get_posted_data()['your-message'], 'spam') !== false) {
        return true; // スパム判定
    }
    return $result;
}

このサンプルコードは、送信されたメッセージに「spam」という単語が含まれている場合、スパムと判定します。

サンプルコード 2: 特定のメールアドレスをスパム扱い

add_filter('wpcf7_akismet_comment_check', 'custom_email_spam_check', 10, 2);

function custom_email_spam_check($result, $submission) {
    $data = $submission->get_posted_data();
    if ($data['your-email'] === 'spam@example.com') {
        return true; // このメールはスパム
    }
    return $result;
}

このサンプルコードは、特定のメールアドレスが入力された場合、そのフォームの送信をスパムと判定します。

サンプルコード 3: 特定のキーワードを含む場合にスパム判定

add_filter('wpcf7_akismet_comment_check', 'keyword_spam_filter', 10, 2);

function keyword_spam_filter($result, $submission) {
    $spam_keywords = ['viagra', 'cialis', 'cheap', 'free'];
    $data = $submission->get_posted_data();

    foreach ($spam_keywords as $keyword) {
        if (strpos($data['your-message'], $keyword) !== false) {
            return true; // スパムと判定
        }
    }
    return $result;
}

このサンプルコードは、送信メッセージに特定のスパムキーワードが含まれる場合に、そのフォームをスパムと判定します。

サンプルコード 4: リファラーのチェック

add_filter('wpcf7_akismet_comment_check', 'referrer_check', 10, 2);

function referrer_check($result, $submission) {
    if (!isset($_SERVER['HTTP_REFERER']) || strpos($_SERVER['HTTP_REFERER'], 'trusteddomain.com') === false) {
        return true; // 信頼できないリファラーならスパム
    }
    return $result;
}

このサンプルコードは、信頼できないリファラーからの送信をスパムとして判断します。

サンプルコード 5: 問題のあるURLをスパム扱い

add_filter('wpcf7_akismet_comment_check', 'url_spam_filter', 10, 2);

function url_spam_filter($result, $submission) {
    $data = $submission->get_posted_data();
    if (filter_var($data['your-website'], FILTER_VALIDATE_URL) &&
        strpos($data['your-website'], 'spammysite.com') !== false) {
        return true; // 問題のあるURLをスパム扱い
    }
    return $result;
}

このサンプルコードは、問題のあるURLを含む場合、そのフォームをスパムと判定します。

この関数について質問する


上の計算式の答えを入力してください