前不久搭建了一个小站,一段时间后打开,发现有 180+ 条垃圾评论,快速查看发现与十年前的这些问题没有多大变化,今天就把14年放在 functions 文件的屏蔽垃圾评论代码进行修改,做成单文件插件,并增加了几个选项,以免主题更新被替换。
使用说明
在 wp-content/plugins 目录下创建一个 wpexp-lajipinglun.php 文件,将下方代码复制到文件里保存,然后在 WordPress 后台启用该插件。
可在 设置→拒绝垃圾评论 页面根据自己的需求进行简单设置。

一般只需要勾选第一个和最后一个即可,当然,你也可以根据自己的实际需求进行调整。如有问题或建议,请留言告知。
<?php
/**
* Plugin Name: WPEXP - 拒绝垃圾评论
* Plugin URI: https://wpexp.cn/plugins/lajipinglun
* Description: 阻止各种类型的垃圾评论,包括全英文、全数字、全中文、全日文和全阿拉伯语评论,提供后台设置界面,可灵活配置过滤规则。
* Version: 1.0.0
* Author: WPEXP
* Author URI: https://wpexp.cn/
* License: GPLv2 or later
* License URI: https://www.gnu.org/licenses/gpl-2.0.html
*/
// 防止直接访问文件
if (!defined('ABSPATH')) {
exit;
}
// 定义插件常量
define('WPEXP_LAJIPINGLUN_VERSION', '1.0.0');
// 添加设置菜单
function wpexp_lajipinglun_add_settings_menu() {
add_options_page(
'拒绝垃圾评论设置', // 页面标题
'拒绝垃圾评论', // 菜单标题
'manage_options', // 访问权限
'wpexp-lajipinglun', // 菜单 slug
'wpexp_lajipinglun_render_settings_page' // 回调函数
);
}
add_action('admin_menu', 'wpexp_lajipinglun_add_settings_menu');
// 注册设置
function wpexp_lajipinglun_register_settings() {
register_setting(
'wpexp_lajipinglun_options_group', // 选项组名
'wpexp_lajipinglun_options', // 选项名
'wpexp_lajipinglun_options_validate' // 验证回调函数
);
add_settings_section(
'wpexp_lajipinglun_main_section', // 部分 ID
'垃圾评论过滤设置', // 标题
'wpexp_lajipinglun_section_text', // 回调函数
'wpexp-lajipinglun' // 页面 slug
);
// 设置字段:评论要求(包含中文字符)
add_settings_field(
'wpexp_lajipinglun_enable_chinese', // 字段 ID
'评论要求', // 标签文本
'wpexp_lajipinglun_enable_chinese_callback', // 回调函数
'wpexp-lajipinglun', // 页面 slug
'wpexp_lajipinglun_main_section', // 部分 ID
[
'label_for' => 'wpexp_lajipinglun_enable_chinese',
'description' => '要求评论中必须包含中文字符'
]
);
// 设置字段:禁止全数字评论
add_settings_field(
'wpexp_lajipinglun_enable_numeric',
'数字评论',
'wpexp_lajipinglun_enable_numeric_callback',
'wpexp-lajipinglun',
'wpexp_lajipinglun_main_section',
[
'label_for' => 'wpexp_lajipinglun_enable_numeric',
'description' => '禁止评论内容全部都是数字'
]
);
// 设置字段:禁止全英文评论
add_settings_field(
'wpexp_lajipinglun_enable_english',
'英文评论',
'wpexp_lajipinglun_enable_english_callback',
'wpexp-lajipinglun',
'wpexp_lajipinglun_main_section',
[
'label_for' => 'wpexp_lajipinglun_enable_english',
'description' => '禁止评论内容全部都是英文'
]
);
// 设置字段:禁止全日文评论
add_settings_field(
'wpexp_lajipinglun_enable_japanese',
'日文评论',
'wpexp_lajipinglun_enable_japanese_callback',
'wpexp-lajipinglun',
'wpexp_lajipinglun_main_section',
[
'label_for' => 'wpexp_lajipinglun_enable_japanese',
'description' => '禁止评论内容全部都是日文'
]
);
// 设置字段:禁止全阿拉伯语评论
add_settings_field(
'wpexp_lajipinglun_enable_arabic',
'阿拉伯语评论',
'wpexp_lajipinglun_enable_arabic_callback',
'wpexp-lajipinglun',
'wpexp_lajipinglun_main_section',
[
'label_for' => 'wpexp_lajipinglun_enable_arabic',
'description' => '禁止评论内容全部都是阿拉伯语'
]
);
// 设置字段:禁止带有超链接和邮箱的评论
add_settings_field(
'wpexp_lajipinglun_enable_links_and_emails',
'超链接和邮箱',
'wpexp_lajipinglun_enable_links_and_emails_callback',
'wpexp-lajipinglun',
'wpexp_lajipinglun_main_section',
[
'label_for' => 'wpexp_lajipinglun_enable_links_and_emails',
'description' => '禁止评论内容包含超链接或邮箱地址'
]
);
}
add_action('admin_init', 'wpexp_lajipinglun_register_settings');
// 设置部分描述
function wpexp_lajipinglun_section_text() {
echo '<p>选择需要启用的垃圾评论过滤规则:</p>';
}
// 验证设置
function wpexp_lajipinglun_options_validate($input) {
$options = get_option('wpexp_lajipinglun_options');
$options['enable_chinese'] = isset($input['enable_chinese']) ? 1 : 0;
$options['enable_numeric'] = isset($input['enable_numeric']) ? 1 : 0;
$options['enable_english'] = isset($input['enable_english']) ? 1 : 0;
$options['enable_japanese'] = isset($input['enable_japanese']) ? 1 : 0;
$options['enable_arabic'] = isset($input['enable_arabic']) ? 1 : 0;
$options['enable_links_and_emails'] = isset($input['enable_links_and_emails']) ? 1 : 0;
return $options;
}
// 设置字段回调函数:评论要求(包含中文字符)
function wpexp_lajipinglun_enable_chinese_callback($args) {
$options = get_option('wpexp_lajipinglun_options');
$checked = isset($options['enable_chinese']) && $options['enable_chinese'] ? 'checked' : '';
echo "<label><input type='checkbox' id='wpexp_lajipinglun_enable_chinese' name='wpexp_lajipinglun_options[enable_chinese]' value='1' $checked /> {$args['description']}</label>";
}
// 设置字段回调函数:禁止全数字评论
function wpexp_lajipinglun_enable_numeric_callback($args) {
$options = get_option('wpexp_lajipinglun_options');
$checked = isset($options['enable_numeric']) && $options['enable_numeric'] ? 'checked' : '';
echo "<label><input type='checkbox' id='wpexp_lajipinglun_enable_numeric' name='wpexp_lajipinglun_options[enable_numeric]' value='1' $checked /> {$args['description']}</label>";
}
// 设置字段回调函数:禁止全英文评论
function wpexp_lajipinglun_enable_english_callback($args) {
$options = get_option('wpexp_lajipinglun_options');
$checked = isset($options['enable_english']) && $options['enable_english'] ? 'checked' : '';
echo "<label><input type='checkbox' id='wpexp_lajipinglun_enable_english' name='wpexp_lajipinglun_options[enable_english]' value='1' $checked /> {$args['description']}</label>";
}
// 设置字段回调函数:禁止全日文评论
function wpexp_lajipinglun_enable_japanese_callback($args) {
$options = get_option('wpexp_lajipinglun_options');
$checked = isset($options['enable_japanese']) && $options['enable_japanese'] ? 'checked' : '';
echo "<label><input type='checkbox' id='wpexp_lajipinglun_enable_japanese' name='wpexp_lajipinglun_options[enable_japanese]' value='1' $checked /> {$args['description']}</label>";
}
// 设置字段回调函数:禁止全阿拉伯语评论
function wpexp_lajipinglun_enable_arabic_callback($args) {
$options = get_option('wpexp_lajipinglun_options');
$checked = isset($options['enable_arabic']) && $options['enable_arabic'] ? 'checked' : '';
echo "<label><input type='checkbox' id='wpexp_lajipinglun_enable_arabic' name='wpexp_lajipinglun_options[enable_arabic]' value='1' $checked /> {$args['description']}</label>";
}
// 设置字段回调函数:禁止带有超链接和邮箱的评论
function wpexp_lajipinglun_enable_links_and_emails_callback($args) {
$options = get_option('wpexp_lajipinglun_options');
$checked = isset($options['enable_links_and_emails']) && $options['enable_links_and_emails'] ? 'checked' : '';
echo "<label><input type='checkbox' id='wpexp_lajipinglun_enable_links_and_emails' name='wpexp_lajipinglun_options[enable_links_and_emails]' value='1' $checked /> {$args['description']}</label>";
}
// 设置页面渲染
function wpexp_lajipinglun_render_settings_page() {
?>
<div class="wrap">
<h1>拒绝垃圾评论设置</h1>
<form method="post" action="options.php">
<?php
settings_fields('wpexp_lajipinglun_options_group'); // 输出安全字段
do_settings_sections('wpexp-lajipinglun'); // 输出所有设置部分
submit_button(); // 提交按钮
?>
</form>
</div>
<?php
}
// 评论过滤函数
function wpexp_lajipinglun_comment_filter($comment_data) {
$options = get_option('wpexp_lajipinglun_options');
// 检查是否需要中文
if (!empty($options['enable_chinese'])) {
$chinese_pattern = '/[\x{4e00}-\x{9fa5}]/u'; // 匹配中文字符
if (!preg_match($chinese_pattern, $comment_data['comment_content'])) {
wp_die(
'<p>写点汉字吧,博主外语很捉急!Please write some Chinese words!</p>' .
'<p>' . __('提交失败,请确保您的评论中包含中文字符。') . '</p>',
__('评论拦截'),
['response' => 403]
);
}
}
// 检查是否为全数字
if (!empty($options['enable_numeric'])) {
$numeric_pattern = '/^\d+$/u'; // 匹配全数字
if (preg_match($numeric_pattern, $comment_data['comment_content'])) {
wp_die(
'<p>不要只输入数字,搞的跟加密一样,讲几句中文吧。</p>' .
'<p>' . __('提交失败,请确保您的评论不只是数字。') . '</p>',
__('评论拦截'),
['response' => 403]
);
}
}
// 检查是否为全英文
if (!empty($options['enable_english'])) {
$english_pattern = '/^[a-zA-Z\s]+$/u'; // 匹配全英文
if (preg_match($english_pattern, $comment_data['comment_content'])) {
wp_die(
'<p>不要只输入英文,请添加一些中文或其他语言内容。</p>' .
'<p>' . __('提交失败,请确保您的评论不只是英文。') . '</p>',
__('评论拦截'),
['response' => 403]
);
}
}
// 检查是否为全日文
if (!empty($options['enable_japanese'])) {
$japanese_pattern = '/^[\x{3040}-\x{30ff}\x{31f0}-\x{31ff}\x{ff00}-\x{ffef}\x{4e00}-\x{9faf}]+$/u'; // 匹配日文字符
if (preg_match($japanese_pattern, $comment_data['comment_content'])) {
wp_die(
'<p>不要使用日语!Don\'t use Japanese!日本語を使用しないでください!</p>' .
'<p>' . __('提交失败,请勿使用纯日文评论。') . '</p>',
__('评论拦截'),
['response' => 403]
);
}
}
// 检查是否为全阿拉伯语
if (!empty($options['enable_arabic'])) {
$arabic_pattern = '/^[\x{0600}-\x{06FF}]+$/u'; // 匹配阿拉伯语字符
if (preg_match($arabic_pattern, $comment_data['comment_content'])) {
wp_die(
'<p>不要使用阿拉伯语!Please do not use Arabic!!من فضلك لا تستخدم اللغة العربية</p>' .
'<p>' . __('提交失败,请勿使用纯阿拉伯语评论。') . '</p>',
__('评论拦截'),
['response' => 403]
);
}
}
// 检查是否包含超链接或邮箱
if (!empty($options['enable_links_and_emails'])) {
$links_and_emails_pattern = '/(http:\/\/|https:\/\/|@)/i'; // 匹配超链接或邮箱
if (preg_match($links_and_emails_pattern, $comment_data['comment_content'])) {
wp_die(
'<p>不要在评论中包含超链接或邮箱地址。</p>' .
'<p>' . __('提交失败,请勿在评论中包含超链接或邮箱地址。') . '</p>',
__('评论拦截'),
['response' => 403]
);
}
}
return $comment_data;
}
add_action('preprocess_comment', 'wpexp_lajipinglun_comment_filter');









