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.
0
indicates 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
279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 | 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. |