bbp_list_forums( array $args = array() )
Output a list of forums (can be used to list subforums)
Description Description
Parameters Parameters
- $args
-
(Optional) The function supports these args: - before: To put before the output. Defaults to
<ul class="bbp-forums-list">- after: To put after the output. Defaults to</ul>- link_before: To put before every link. Defaults to<li class="bbp-forum">- link_after: To put after every link. Defaults to</li>- sep: Separator. Defaults to ''. Make sure your markup is valid! - count_before: String before each count Defaults to ' (' - count_after: String before each count Defaults to ')' - count_sep: Count separator. Defaults to ', ' - forum_id: Forum id. Defaults to '' - show_topic_count - To show forum topic count or not. Defaults to true - show_reply_count - To show forum reply count or not. Defaults to trueDefault value: array()
Source Source
File: includes/forums/template.php
function bbp_list_forums( $args = array() ) {
// Parse arguments against default values
$r = bbp_parse_args( $args, array(
'before' => '<ul class="bbp-forums-list">',
'after' => '</ul>',
'link_before' => '<li class="bbp-forum css-sep">',
'link_after' => '</li>',
'sep' => '',
'count_before' => ' (',
'count_after' => ')',
'count_sep' => ', ',
'forum_id' => bbp_get_forum_id(),
'show_topic_count' => true,
'show_reply_count' => true,
'echo' => true,
// Retired, use 'sep' instead
'separator' => false
), 'list_forums' );
/**
* Necessary for backwards compatibility
* @see https://bbpress.trac.wordpress.org/ticket/2900
*/
if ( ! empty( $r['separator'] ) ) {
$r['sep'] = $r['separator'];
}
// Default values
$links = array();
$output = '';
// Query for subforums
$sub_forums = ! empty( $r['forum_id'] )
? bbp_forum_get_subforums( $r['forum_id'] )
: array();
// Loop through forums and create a list
if ( ! empty( $sub_forums ) ) {
foreach ( $sub_forums as $sub_forum ) {
// Get forum details
$count = array();
$permalink = bbp_get_forum_permalink( $sub_forum->ID );
$title = bbp_get_forum_title( $sub_forum->ID );
// Show topic count
if ( ! empty( $r['show_topic_count'] ) && ! bbp_is_forum_category( $sub_forum->ID ) ) {
$count['topic'] = bbp_get_forum_topic_count( $sub_forum->ID );
}
// Show reply count
if ( ! empty( $r['show_reply_count'] ) && ! bbp_is_forum_category( $sub_forum->ID ) ) {
$count['reply'] = bbp_get_forum_reply_count( $sub_forum->ID );
}
// Counts to show
$counts = ! empty( $count )
? $r['count_before'] . implode( $r['count_sep'], $count ) . $r['count_after']
: '';
// Subforum classes
$subforum_classes = array( 'bbp-forum-link' );
$subforum_classes = apply_filters( 'bbp_list_forums_subforum_classes', $subforum_classes, $sub_forum->ID );
// This could use bbp_get_forum_class() eventually...
$subforum_classes_attr = 'class="' . implode( ' ', array_map( 'sanitize_html_class', $subforum_classes ) ) . '"';
// Build this sub forums link
$links[] = $r['link_before'] . '<a href="' . esc_url( $permalink ) . '" ' . $subforum_classes_attr . '>' . $title . $counts . '</a>' . $r['link_after'];
}
// Maybe wrap output
$output = ! empty( $links )
? $r['before'] . implode( $r['sep'], $links ) . $r['after']
: '';
}
// Filter output
$the_list = apply_filters( 'bbp_list_forums', $output, $r, $args );
// Echo or return the forums list
if ( ! empty( $r['echo'] ) ) {
echo $the_list;
} else {
return $the_list;
}
}
Changelog Changelog
| Version | Description |
|---|---|
| 2.0.0 | Introduced. |