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データを削減しましょう。