Many WordPress site owners want to encourage meaningful engagement by requiring comments to meet a minimum length. This post provides two pure-code solutions to enforce minimum (and optionally maximum) comment length directly in your theme's functions.php file.
Method 1: Enforce Minimum Comment Length
Add the following code to your active theme's functions.php file:
add_filter( 'preprocess_comment', 'minimal_comment_length' );
function minimal_comment_length( $commentdata ) {
$minimalCommentLength = 40;
if ( strlen( trim( $commentdata['comment_content'] ) ) < $minimalCommentLength ) {
wp_die( 'Error: Your comment is too short. Please enter at least ' . $minimalCommentLength . ' characters.' );
}
return $commentdata;
}
Code Explanation
$minimalCommentLength = 40;– Sets the minimum allowed length in bytes.strlen( trim( $commentdata['comment_content'] ) )– Calculates the byte length of the submitted comment after trimming whitespace.wp_die()– Stops processing and displays an error message if the length requirement is not met.- This check applies to all users (logged-in and guests).
Method 2: Enforce Min/Max Length (Logged-in Users Exempt)
This enhanced method sets both minimum and maximum limits, but only for guests. Add this to your functions.php:
function enforce_comment_length($commentdata) {
$minCommentlength = 100; // Minimum character count
$maxCommentlength = 2200; // Maximum character count
// Use mb_strlen for accurate multi‑byte (e.g., Chinese) character counting
$commentLength = mb_strlen($commentdata['comment_content'], 'UTF8');
// Apply minimum length check only to non‑logged‑in users
if ( ($commentLength < $minCommentlength) && !is_user_logged_in() ){
wp_die('Error: Your comment is too short. Please enter at least ' . $minCommentlength . ' characters (current: '. $commentLength .'). [Logged‑in users are exempt]');
}
// Apply maximum length check only to non‑logged‑in users
if ( ($commentLength > $maxCommentlength) && !is_user_logged_in() ){
wp_die('Error: Your comment is too long. Please limit it to ' . $maxCommentlength . ' characters (current: '. $commentLength .'). [Logged‑in users are exempt]');
}
return $commentdata;
}
add_filter('preprocess_comment', 'enforce_comment_length');
Code Explanation
$minCommentlength&$maxCommentlength– Define the allowed character range.mb_strlen(…, 'UTF8')– Correctly counts characters in multi‑byte strings (e.g., Chinese, Japanese). One Chinese character counts as 1.is_user_logged_in()– Checks if the user is logged in. Limits apply only to guests; logged‑in users bypass the checks.wp_die()– Used to halt submission and show an appropriate error message.
How to Implement
- Choose one of the methods above and adjust the length values as needed.
- In your WordPress dashboard, go to Appearance → Theme File Editor.
- Select Theme Functions (functions.php) from the file list on the right.
- Paste the code before the closing
?>tag (if present) or at the very end of the file. - Click Update File to save.
- Important: Always use a child theme or backup your theme files before editing to prevent loss during updates.