我们辛苦收集的内容免费开放下载,仅仅只需评论应该不过分吧?但是我发现很多朋友评论一两个字,特别的敷衍,就这样完全不管我的想法,所以我就想要限制文章评论当中的最少字数。
我在网上搜索到一些代码,自己也使用过,确实有效果,现在分享出来:
方法一:限制评论最少字数
将以下代码添加到当前 WordPress 主题的 functions.php 文件中:
add_filter( 'preprocess_comment', 'minimal_comment_length' );
function minimal_comment_length( $commentdata ) {
$minimalCommentLength = 40;
if ( strlen( trim( $commentdata['comment_content'] ) ) < $minimalCommentLength ) {
wp_die( '抱歉,您的评论太短了,请至少输入 ' . $minimalCommentLength . ' 个字!' );
}
return $commentdata;
}
代码说明
$minimalCommentLength = 40;:定义了评论内容的最小字符数。这里的“字符”是指字节数,一个中文字符通常占 3 个字节。strlen( trim( $commentdata['comment_content'] ) ):计算用户提交的评论内容(去除首尾空格后)的字节长度。wp_die():如果评论长度不达标,则直接终止页面加载并显示错误信息。- 此方法对所有用户(包括登录用户)生效。
方法二:限制评论最少与最多字数(区分登录状态)
以下代码提供了更精细的控制,可以同时设置最少和最多字数,并且对已登录用户放宽限制。同样添加到 functions.php 文件中:
function lxtx_set_comments_length($commentdata) {
$minCommentlength = 100; // 最少字数限制
$maxCommentlength = 2200; // 最多字数限制
// 使用 mb_strlen 正确计算中文字符数,一个中文算一个长度
$pointCommentlength = mb_strlen($commentdata['comment_content'], 'UTF8');
// 仅对未登录用户进行最少字数检查
if ( ($pointCommentlength < $minCommentlength) && !is_user_logged_in() ){
wp_die('抱歉!您说的内容太少了,请至少输入 ' . $minCommentlength . ' 个字(当前字数:'. $pointCommentlength .')。【登录后无此限制】');
}
// 仅对未登录用户进行最多字数检查
if ( ($pointCommentlength > $maxCommentlength) && !is_user_logged_in() ){
wp_die('对不起,您的评论太长了,请控制在 ' . $maxCommentlength . ' 字以内(当前字数:'. $pointCommentlength .')。【登录后无此限制】');
}
return $commentdata;
}
add_filter('preprocess_comment', 'lxtx_set_comments_length');
代码说明与修正
- 重要修正:原文中的
err()函数并非 WordPress 核心函数,会导致错误。已将其替换为标准函数wp_die()。 $minCommentlength与$maxCommentlength:分别定义评论的最小和最大字符数。这里的“字符”由mb_strlen计算,一个中文字符计为 1,更符合中文使用习惯。is_user_logged_in():用于判断用户是否已登录。此代码中的限制仅对未登录用户生效,已登录用户不受限制。mb_strlen($commentdata['comment_content'], 'UTF8'):使用多字节字符串函数正确计算包含中文的字符串长度,确保准确性。
使用方法总结
- 选择上述任一方法(或根据需求修改)。
- 登录 WordPress 后台,进入 外观 → 主题文件编辑器。
- 在右侧文件列表中找到并点击 主题函数 (functions.php)。
- 将代码粘贴到文件末尾的
?>标签之前(如果该文件没有?>,则直接粘贴到文件末尾)。 - 点击“更新文件”保存。
- 重要提示:修改主题文件前,建议先创建子主题或在修改前备份原文件,以免主题更新时丢失更改。
厉害