The pre_comment_on_post WordPress PHP action fires before a comment is posted on a specific post.
Usage
add_action('pre_comment_on_post', 'your_custom_function'); function your_custom_function($comment_post_id) { // Your custom code here }
Parameters
- $comment_post_id (int): The ID of the post on which the comment is being submitted.
More information
See WordPress Developer Resources: pre_comment_on_post
Examples
Prevent comments on a specific post
This code prevents users from submitting comments on a post with the specified ID.
add_action('pre_comment_on_post', 'prevent_comments_on_specific_post'); function prevent_comments_on_specific_post($comment_post_id) { $post_to_disable_comments = 123; // Change this to the post ID on which you want to disable comments if ($comment_post_id == $post_to_disable_comments) { wp_die('Sorry, comments are not allowed on this post.'); } }
Limit comment length
This code limits the length of comments to 200 characters.
add_action('pre_comment_on_post', 'limit_comment_length'); function limit_comment_length($comment_post_id) { $comment_content = $_POST['comment']; if (strlen($comment_content) > 200) { wp_die('Your comment is too long. Please keep it under 200 characters.'); } }
Block comments containing specific words
This code prevents comments containing specific words from being submitted.
add_action('pre_comment_on_post', 'block_comments_with_specific_words'); function block_comments_with_specific_words($comment_post_id) { $blocked_words = array('spam', 'example'); // Add words to this array that you want to block $comment_content = strtolower($_POST['comment']); foreach ($blocked_words as $word) { if (strpos($comment_content, $word) !== false) { wp_die('Your comment contains a blocked word.'); } } }
Require a minimum comment length
This code requires comments to be at least 30 characters long.
add_action('pre_comment_on_post', 'require_minimum_comment_length'); function require_minimum_comment_length($comment_post_id) { $comment_content = $_POST['comment']; if (strlen($comment_content) < 30) { wp_die('Your comment is too short. Please write at least 30 characters.'); } }
Close comments after a specific date
This code closes comments on all posts after a specific date.
add_action('pre_comment_on_post', 'close_comments_after_specific_date'); function close_comments_after_specific_date($comment_post_id) { $close_date = '2023-05-01'; // Change this to the date you want to close comments $current_date = date('Y-m-d'); if ($current_date >= $close_date) { wp_die('Comments are closed on this post.'); } }