Skip to content

Instantly share code, notes, and snippets.

@robertdevore
Last active November 16, 2016 21:27
Show Gist options
  • Save robertdevore/2bfb3246f27849192ab72d9787bfaa3d to your computer and use it in GitHub Desktop.
Save robertdevore/2bfb3246f27849192ab72d9787bfaa3d to your computer and use it in GitHub Desktop.
Customizing the forum display for bbPress to be more like standard forums
<?php
/**
* Forums Loop
*
* @package bbPress
* @subpackage Theme
*
* Original code via: https://bbpress.org/forums/topic/forums-index-in-the-same-layout-as-other-bb-software/
*/
?>
<?php do_action( 'bbp_template_before_forums_loop' ); ?>
<?php while ( bbp_forums() ) : bbp_the_forum();
/* We print the header only if we want to show a category or if it's the first item of a no-parent forum list */
if ( bbp_is_forum_category() OR !$bbp_forums_noheader ) { ?>
<ul id="forums-list-<?php bbp_forum_id(); ?>" class="bbp-forums">
<li class="bbp-header">
<ul class="forum-titles">
<li class="bbp-forum-info"><?php if( bbp_is_forum_category() ) { ?><?php bbp_forum_title( bbp_get_forum_parent_id() ); ?><?php } else { _e( 'Forum', 'bbpress' ); } ?></li>
<li class="bbp-forum-topic-count"><?php _e( 'Topics', 'bbpress' ); ?></li>
<li class="bbp-forum-reply-count"><?php bbp_show_lead_topic() ? _e( 'Replies', 'bbpress' ) : _e( 'Posts', 'bbpress' ); ?></li>
<li class="bbp-forum-freshness"><?php _e( 'Freshness', 'bbpress' ); ?></li>
</ul>
</li><!-- .bbp-header -->
<?php } ?>
<li class="bbp-body">
<?php
/* If the forum is a category, we're gonna make another loop to show its subforums and sub-subforums as if those were forums */
if(bbp_is_forum_category()) {
$temp_query = clone bbpress()->forum_query;
bbp_has_forums( 'post_parent='.bbp_get_forum_id() );
while ( bbp_forums() ) : bbp_the_forum();
bbp_get_template_part( 'loop', 'single-forum' );
endwhile;
bbpress()->forum_query = clone $temp_query;
} else /* Otherwise, we print the forums the normal way */ {
bbp_get_template_part( 'loop', 'single-forum' );
$bbp_forums_noheader = 1; /* This prevents the header part to be printed again on next post in the loop */
} ?>
</li><!-- .bbp-body -->
<?php
/* Prints the footer only if :
- it's a category
- or if it's the last forum of a no-parent forum list
- or if the next forum in the loop is a category
*/
if ( bbp_is_forum_category()
OR ( bbpress()->forum_query->current_post+1 ) == bbpress()->forum_query->post_count
OR bbp_is_forum_category( bbpress()->forum_query->posts[ bbpress()->forum_query->current_post + 1 ]->ID ) )
{ ?>
</ul><!-- .bbp-forums -->
<?php
/* Needed if we have 2+ no-parent forums with at least 1 category between them */
unset( $bbp_forums_noheader );
} ?>
<?php endwhile; ?>
<?php do_action( 'bbp_template_after_forums_loop' ); ?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment