2026年5月20日

2026年5月20日

Akismetスパム対策プラグインの設定方法

はじめに

AkismetはWordPressに標準でバンドルされているスパム対策プラグインです。コメント・お問い合わせフォームへのスパムをAIで自動判定し、不要なコメントを自動的にスパムフォルダーに振り分けます。

症状・原因

  • WordPressにスパムコメントが大量に届く
  • Akismetを有効化したいがAPIキーの取得方法がわからない
  • 正常なコメントがスパム判定されてしまう(誤検知)
  • スパムコメントをまとめて削除したい

解決手順

ステップ1:APIキーを取得する

1. https://akismet.com にアクセス
2.「Get an Akismet API key」をクリック
3. WordPress.comアカウントでログイン(または新規作成)
4. プラン選択:
   → 個人ブログ(非商用): 無料($0 / 月)
   → ビジネスサイト: 有料プラン
5. APIキーをコピー(例: a1b2c3d4e5f6)

ステップ2:AkismetにAPIキーを設定する

WordPress管理画面 → プラグイン → Akismet:
→「設定」をクリック
→「APIキーを入力」フィールドにAPIキーを貼り付け
→「APIキーを使用」ボタンをクリック
→「有効です」と表示されれば設定完了
# WP-CLIでAPIキーを設定
wp option update wordpress_api_key "あなたのAPIキー"

# 設定確認
wp option get wordpress_api_key
wp plugin status akismet

ステップ3:Akismetの詳細設定を行う

Akismet設定ページ:
→「スパムのステータス」をコメント一覧に表示する: ON
→「厳格度」:
  ● 標準(推奨): スパムをスパムフォルダーへ
  ○ 積極的: スパムを自動削除(誤検知リスクあり)
→「コメント投稿者のプライバシー通知を表示」: ON(GDPR対応)
→「変更を保存」

ステップ4:スパムコメントを管理する

# スパムコメント数を確認
wp comment list --status=spam --format=count

# スパムコメントの一覧を表示
wp comment list --status=spam --fields=comment_ID,comment_author,comment_date \
  --format=table | head -20

# スパムコメントをすべて削除
wp comment delete $(wp comment list --status=spam --format=ids) --force

# 承認待ちコメントを確認
wp comment list --status=hold --format=count

ステップ5:誤検知(正常なコメントがスパム判定)に対処する

# スパムフォルダーから特定コメントを復元
wp comment approve {COMMENT_ID}

# コメントのAkismetメタデータを確認
wp comment meta get {COMMENT_ID} akismet_result
wp comment meta get {COMMENT_ID} akismet_history

# Akismetにスパムでないと報告(ham=正常)
wp eval "
akismet_submit_nonspam_comment({COMMENT_ID});
echo 'Reported as ham (not spam)';
"

ステップ6:Contact Form 7とAkismetを連携する

Contact Form 7 フォーム編集 → 「Akismet」タブ:
→ メール項目: your-email(メールフィールドを指定)
→ 投稿者名: your-name(名前フィールドを指定)
→ URL: your-url(URLフィールドがあれば)

これにより CF7 への問い合わせもAkismetでスパム判定される
// functions.php — Akismetのスパムスコアを取得
function get_akismet_score(int $comment_id): string {
    $result = get_comment_meta($comment_id, 'akismet_result', true);
    return $result ?: 'unknown';
}

// スパム率の統計を取得
function get_akismet_stats(): array {
    $stats = get_option('akismet_spam_count', 0);
    return ['total_spam_blocked' => $stats];
}

ステップ7:スパムを定期的に自動削除する

// functions.php — 30日以上古いスパムを自動削除
add_action('wp_scheduled_delete', function(): void {
    // WordPressデフォルトの自動削除(30日)が有効か確認
    $days = (int) get_option('comment_max_links', 2);
});

// WP-CLIでcronを設定して定期削除
// wp cron event schedule wp_scheduled_delete now daily
# 手動で古いスパムを削除(30日以上前)
wp eval "
global \$wpdb;
\$deleted = \$wpdb->query(
  \$wpdb->prepare(
    \"DELETE FROM {\$wpdb->comments} WHERE comment_approved = 'spam'
     AND comment_date < %s\",
    date('Y-m-d', strtotime('-30 days'))
  )
);
echo \$deleted . ' spam comments deleted';
"

注意事項

  • 個人・非商用ブログ以外のサイトでは有料プランのAPIキーが必要です(利用規約)
  • 「積極的」モードはスパムを自動削除するため誤検知時に復元できません。標準モード推奨です
  • スパムフォルダーは定期的に確認して誤検知コメントを救出してください

まとめ

Akismetはakismet.comでAPIキーを取得してWordPressに入力するだけで有効化できます。wp comment list --status=spam でスパム状況を確認し、定期的なクリーンアップで無駄なDBデータを削減しましょう。

お気軽にご相談ください

お見積りへ お問い合わせへ