bbp_update_forum_reply_count( int $forum_id )
Adjust the total reply count of a forum
Description
Parameters
- $forum_id
-
(Optional) Forum id or topic id. It is checked whether it is a topic or a forum. If it's a topic, its parent, i.e. the forum is automatically retrieved.
- $total_count
-
(Optional) To return the total count or normal count?
Return
(int) Forum reply count
Source
File: bp-forums/forums/functions.php
function bbp_update_forum_reply_count( $forum_id = 0 ) {
global $wpdb;
$forum_id = bbp_get_forum_id( $forum_id );
$children_reply_count = 0;
// Loop through children and add together forum reply counts
$children = bbp_forum_query_subforum_ids( $forum_id );
if ( !empty( $children ) ) {
foreach ( (array) $children as $child ) {
$children_reply_count += bbp_update_forum_reply_count( $child );
}
}
// Don't count replies if the forum is a category
$topic_ids = bbp_forum_query_topic_ids( $forum_id );
if ( !empty( $topic_ids ) ) {
$topic_ids = implode( ',', wp_parse_id_list( $topic_ids ) );
$reply_count = (int) $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(ID) FROM {$wpdb->posts} WHERE post_parent IN ( {$topic_ids} ) AND post_status = '%s' AND post_type = '%s';", bbp_get_public_status_id(), bbp_get_reply_post_type() ) );
} else {
$reply_count = 0;
}
// Calculate total replies in this forum
$total_replies = (int) $reply_count + $children_reply_count;
// Update the count
update_post_meta( $forum_id, '_bbp_reply_count', (int) $reply_count );
update_post_meta( $forum_id, '_bbp_total_reply_count', (int) $total_replies );
return (int) apply_filters( 'bbp_update_forum_reply_count', (int) $total_replies, $forum_id );
}
Changelog
| Version | Description |
|---|---|
| bbPress (r2464) | Introduced. |
Questions?
We're always happy to help with code or other questions you might have! Search our developer docs, contact support, or connect with our sales team.