LLMS_Comments::wp_count_comments( stdClass|array $stats, int $post_id )
Remove order notes from the count when counting comments
Description Description
This method is hooked to wp_count_comments, called by wp_count_comments().
It handles two potential scenarios:
1) No other plugins have run the filter and the incoming $stats is an empty array. In this scenario we’ll utilize get_comment_count() to create a new $stats object
2) Another plugin has already generated a stats object and then incoming $stats is a stdClass.
In either scenario we query the number of order notes and subtract this number from the existing comment counts.
Parameters Parameters
- $stats
-
(stdClass|array) (Required) Empty array or a stdClass of stats from another plugin.
- $post_id
-
(int) (Required) WP Post ID.
0indicates comment stats for the entire site.
Return Return
(stdClass) The number of comments keyed by their status.
- 'approved'
(int) The number of approved comments. - 'moderated'
(int) The number of comments awaiting moderation (a.k.a. pending). - 'spam'
(int) The number of spam comments. - 'trash'
(int) The number of trashed comments. - 'post-trashed'
(int) The number of comments for posts that are in the trash. - 'total_comments'
(int) The total number of non-trashed comments, including spam. - 'all'
(int) The total number of pending or approved comments.
Source Source
File: includes/class.llms.comments.php
public static function wp_count_comments( $stats, $post_id ) {
// If someone calls this directly on 6.0 or later notify them and return early.
if ( ! self::should_modify_comment_counts() ) {
_doing_it_wrong( __METHOD__, 'This method should not be called on WordPress 6.0 or later.', '6.6.0' );
return $stats;
}
// Don't modify when querying for a specific post.
if ( 0 !== $post_id ) {
return $stats;
}
// Return cached object if available.
$cached = get_transient( self::$count_transient_key );
if ( $cached ) {
return $cached;
}
// If $stats is empty, get a new object from the WP Core that we can modify.
if ( empty( $stats ) ) {
$stats = get_comment_count( $post_id );
// The keys in wp_count_comments() and get_comment_counts() don't match.
$stats['moderated'] = $stats['awaiting_moderation'];
unset( $stats['awaiting_moderation'] );
// Cast to an object.
$stats = (object) $stats;
}
// Otherwise modify the existing stats object.
return self::modify_comment_stats( $stats );
}
Expand full source code Collapse full source code View on GitHub
Changelog Changelog
| Version | Description |
|---|---|
| 6.6.0 | Will throw _doing_it_wrong() when run on WP 6.0 or later and return the input $stats unchanged. |
| 3.37.12 | Use strict comparisons. Fix issue encountered when $stats is an empty array. Modify the stats generation method. |
| 3.0.0 | Introduced. |