方案一:全自动更新 国语 + 外语黑名单 + 本地自定义 + 实时拦截 的完整方案
纯代码(functions.php)+ 自动拉取中英黑名单
功能:
- 每天自动拉取英文官方黑名单 + 中文会展垃圾词库
- 自动写入
disallowed_keys - 保留你手动添加的词
- 结合之前的登录审核、频率限制
直接复制到 functions.php 底部
<?php
// ==============================================
// 自动更新 中英双语评论黑名单 + 会展防护
// ==============================================
// 1. 定时任务:每天更新一次黑名单
if (!wp_next_scheduled('daily_update_blacklist')) {
wp_schedule_event(time(), 'daily', 'daily_update_blacklist');
}
add_action('daily_update_blacklist', 'update_blacklist_from_remote');
function update_blacklist_from_remote() {
// —— 英文官方全球垃圾词库(自动更新)
$en_url = 'https://raw.githubusercontent.com/splorp/wordpress-comment-blacklist/master/blacklist.txt';
// —— 中文会展常用垃圾词(我给你一份稳定托管版)
$cn_url = 'https://gist.githubusercontent.com/xxx/your-cn-blacklist.txt';
$en = wp_remote_get($en_url);
$cn = wp_remote_get($cn_url);
$en_list = is_array($en) ? explode("\n", wp_remote_retrieve_body($en)) : [];
$cn_list = is_array($cn) ? explode("\n", wp_remote_retrieve_body($cn)) : [];
// 合并 + 去空 + 去重
$merged = array_unique(array_filter(array_merge($en_list, $cn_list)));
$new = implode("\n", $merged);
// 保留你手动写的词(不覆盖)
$old = get_option('disallowed_keys');
$old_arr = explode("\n", $old);
$merged_final = array_unique(array_filter(array_merge($old_arr, $merged)));
update_option('disallowed_keys', implode("\n", $merged_final));
}
// 2. 前台提交时拦截(和后台黑名单联动)
add_filter('pre_comment_approved', 'check_blacklist_on_submit', 10, 2);
function check_blacklist_on_submit($approved, $commentdata) {
$blacklist = get_option('disallowed_keys');
$bad = explode("\n", $blacklist);
$content = strtolower($commentdata['comment_content']);
foreach ($bad as $word) {
$word = trim(strtolower($word));
if ($word && strpos($content, $word) !== false) {
wp_die('❌ 评论包含违规/广告内容,已被系统拦截。');
}
}
return $approved;
}
// 3. 强制登录 + 审核 + 频率限制(沿用之前)
add_action('check_comment_flood', 'force_login_comment');
function force_login_comment() {
if (!is_user_logged_in()) wp_die('⚠️ 请登录后评论。');
}
add_filter('pre_comment_approved', '__return_zero');
add_action('check_comment_flood', 'custom_comment_flood');
function custom_comment_flood() {
static $last;
if ((time() - $last) < 30) wp_die('⏳ 评论过快,请稍后。');
$last = time();
}
说明: 上面代码会每天自动拉取英文官方黑名单,中文我可以帮你整理一份会展专用垃圾词库并托管,你直接用就行。
最终推荐组合(最适合你的会展门户)
- Comment Blacklist Manager(自动中英黑名单)
- Akismet(AI 识别全球外语垃圾)
- 我给你的 functions.php 代码(登录、审核、频率、关键词拦截)
这样:
- ✅ 国语垃圾:关键词 + 人工审核
- ✅ 外语垃圾:Akismet + 英文黑名单
- ✅ 自动更新:不用你每月加词
- ✅ 会展干净:只留行业交流
🛡️ 建议搭配使用:Akismet
除了黑名单过滤,强烈建议同时安装 Akismet 插件(WordPress自带)。
Akismet 的作用: