会展信息门户网 评论防垃圾 / 防乱发 完整解决方案

方案一:全自动更新 国语 + 外语黑名单 + 本地自定义 + 实时拦截 的完整方案

纯代码(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();
}

说明: 上面代码会每天自动拉取英文官方黑名单,中文我可以帮你整理一份会展专用垃圾词库并托管,你直接用就行。

最终推荐组合(最适合你的会展门户)

  1. Comment Blacklist Manager(自动中英黑名单)
  2. Akismet(AI 识别全球外语垃圾)
  3. 我给你的 functions.php 代码(登录、审核、频率、关键词拦截)

这样:

  • ✅ 国语垃圾:关键词 + 人工审核
  • ✅ 外语垃圾:Akismet + 英文黑名单
  • ✅ 自动更新:不用你每月加词
  • ✅ 会展干净:只留行业交流

🛡️ 建议搭配使用:Akismet

除了黑名单过滤,强烈建议同时安装 Akismet 插件(WordPress自带)。

Akismet 的作用:

  • 通过云端数据库智能识别垃圾评论
  • 不依赖简单的关键词匹配,能识别变形词
  • 与黑名单过滤互补,形成双重防护