You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在WordPress检测到西里尔字符时禁用评论功能

拦截含西里尔字符的WordPress垃圾评论方案

关于ASCII 437/850/852字符集的可行性

完全可以通过限制评论仅使用ASCII 437、850、852字符集拦截西里尔字符——这三个字符集均以基础ASCII(0-127)为核心,仅扩展了西欧语言相关的特殊字符,完全不包含西里尔字符。只要评论内容超出这个范围,就能直接判定为垃圾评论拦截。

代码片段实现方案

直接在WordPress中添加以下代码,通过评论提交前的钩子拦截不符合字符要求的评论:

add_action('pre_comment_on_post', 'block_non_ascii_western_comments');
function block_non_ascii_western_comments($post_id) {
    // 获取提交的评论内容
    $comment_content = isset($_POST['comment']) ? trim($_POST['comment']) : '';
    
    // 方案1:限制仅为单字节字符(覆盖ASCII 437/850/852全字符集)
    if (!preg_match('/^[\x00-\xFF]*$/', $comment_content)) {
        wp_die('评论内容包含不允许的字符,提交失败。');
    }

    // 方案2:精准拦截西里尔字符(若需仅针对西里尔字符限制)
    // if (preg_match('/[\x{0400}-\x{04FF}]/u', $comment_content)) {
    //     wp_die('评论内容包含不允许的字符,提交失败。');
    // }
}

代码说明

  • 用pre_comment_on_post钩子在评论正式提交前检查,性能更优
  • 方案1通过正则限制内容仅为单字节字符,直接排除Unicode编码的西里尔多字节字符,完全覆盖你提到的三个ASCII字符集范围
  • 方案2精准匹配西里尔字符的Unicode区间(U+0400至U+04FF),仅拦截含西里尔字符的评论
  • 拦截后通过wp_die返回错误提示

使用方法

  1. 登录WordPress后台,进入「外观」→「主题文件编辑器」
  2. 找到并打开当前主题的functions.php文件
  3. 将代码粘贴到文件末尾并保存
  4. 也可使用「代码片段」插件添加代码,避免主题更新丢失修改

内容的提问来源于stack exchange,提问作者x0100

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 02:22:33