WC_Comments::wp_count_comments( object $stats, int $post_id )
Remove order notes and webhook delivery logs from wp_count_comments().
Description Description
Parameters Parameters
- $stats
-
(Required) Comment stats.
- $post_id
-
(Required) Post ID.
Return Return
(object)
Source Source
File: includes/class-wc-comments.php
public static function wp_count_comments( $stats, $post_id ) {
global $wpdb;
if ( 0 === $post_id ) {
$stats = get_transient( 'wc_count_comments' );
if ( ! $stats ) {
$stats = array(
'total_comments' => 0,
'all' => 0,
);
$count = $wpdb->get_results(
"
SELECT comment_approved, COUNT(*) AS num_comments
FROM {$wpdb->comments}
WHERE comment_type NOT IN ('action_log', 'order_note', 'webhook_delivery')
GROUP BY comment_approved
",
ARRAY_A
);
$approved = array(
'0' => 'moderated',
'1' => 'approved',
'spam' => 'spam',
'trash' => 'trash',
'post-trashed' => 'post-trashed',
);
foreach ( (array) $count as $row ) {
// Don't count post-trashed toward totals.
if ( ! in_array( $row['comment_approved'], array( 'post-trashed', 'trash', 'spam' ), true ) ) {
$stats['all'] += $row['num_comments'];
$stats['total_comments'] += $row['num_comments'];
} elseif ( ! in_array( $row['comment_approved'], array( 'post-trashed', 'trash' ), true ) ) {
$stats['total_comments'] += $row['num_comments'];
}
if ( isset( $approved[ $row['comment_approved'] ] ) ) {
$stats[ $approved[ $row['comment_approved'] ] ] = $row['num_comments'];
}
}
foreach ( $approved as $key ) {
if ( empty( $stats[ $key ] ) ) {
$stats[ $key ] = 0;
}
}
$stats = (object) $stats;
set_transient( 'wc_count_comments', $stats );
}
}
return $stats;
}
Changelog Changelog
| Version | Description |
|---|---|
| 2.2 | Introduced. |