Using WordPress ‘pre_wp_update_comment_count_now’ PHP filter

‘pre_wp_update_comment_count_now’ is a WordPress PHP filter that allows you to modify a post’s comment count before it gets updated in the database.

Usage

To use this filter, add a custom function to your theme’s functions.php file or a custom plugin, and hook it to the ‘pre_wp_update_comment_count_now’ filter.

add_filter( 'pre_wp_update_comment_count_now', 'your_function_name', 10, 3 );

Parameters

  • $new (int|null): The new comment count. Default null.
  • $old (int): The old comment count.
  • $post_id (int): Post ID.

Examples

Double Comment Count

function double_comment_count( $new, $old, $post_id ) {
    return $old * 2;
}
add_filter( 'pre_wp_update_comment_count_now', 'double_comment_count', 10, 3 );

This example doubles the current comment count before updating it in the database.

Minimum Comment Count

function set_minimum_comment_count( $new, $old, $post_id ) {
    return max( $old, 10 );
}
add_filter( 'pre_wp_update_comment_count_now', 'set_minimum_comment_count', 10, 3 );

This example sets a minimum comment count of 10, preventing the count from dropping below this value.

Add 5 Comments to Specific Post

function add_five_comments_to_post( $new, $old, $post_id ) {
    if ( $post_id == 123 ) {
        return $old + 5;
    }
    return $old;
}
add_filter( 'pre_wp_update_comment_count_now', 'add_five_comments_to_post', 10, 3 );

This example adds 5 comments to the comment count of a specific post with the ID 123.

Exclude Comments from Count by Author

function exclude_author_comments( $new, $old, $post_id ) {
    $author_id = 42;
    $comments = get_comments( array( 'post_id' => $post_id, 'author__not_in' => array( $author_id ) ) );
    return count( $comments );
}
add_filter( 'pre_wp_update_comment_count_now', 'exclude_author_comments', 10, 3 );

This example excludes comments made by an author with the ID 42 from the comment count.

Only Count Approved Comments

function count_only_approved_comments( $new, $old, $post_id ) {
    $approved_comments = get_comments( array( 'post_id' => $post_id, 'status' => 'approve' ) );
    return count( $approved_comments );
}
add_filter( 'pre_wp_update_comment_count_now', 'count_only_approved_comments', 10, 3 );

This example ensures that only approved comments are counted for the comment count of a post.