BBP_Topics_Widget::widget( mixed $args = array(), array $instance = array() )
Displays the output, the topic list
Description
Parameters
- $args
-
(Optional)
Default value: array()
- $instance
-
(Optional)
Default value: array()
Source
File: bp-forums/common/widgets.php
public function widget( $args = array(), $instance = array() ) { // Get widget settings $settings = $this->parse_settings( $instance ); // Typical WordPress filter $settings['title'] = apply_filters( 'widget_title', $settings['title'], $instance, $this->id_base ); // Forums filter $settings['title'] = apply_filters( 'bbp_topic_widget_title', $settings['title'], $instance, $this->id_base ); // How do we want to order our results? switch ( $settings['order_by'] ) { // Order by most recent replies case 'freshness' : $topics_query = array( 'post_type' => bbp_get_topic_post_type(), 'post_parent' => $settings['parent_forum'], 'posts_per_page' => (int) $settings['max_shown'], 'post_status' => array( bbp_get_public_status_id(), bbp_get_closed_status_id() ), 'ignore_sticky_posts' => true, 'no_found_rows' => true, 'meta_key' => '_bbp_last_active_time', 'orderby' => 'meta_value', 'order' => 'DESC', ); break; // Order by total number of replies case 'popular' : $topics_query = array( 'post_type' => bbp_get_topic_post_type(), 'post_parent' => $settings['parent_forum'], 'posts_per_page' => (int) $settings['max_shown'], 'post_status' => array( bbp_get_public_status_id(), bbp_get_closed_status_id() ), 'ignore_sticky_posts' => true, 'no_found_rows' => true, 'meta_key' => '_bbp_reply_count', 'orderby' => 'meta_value', 'order' => 'DESC' ); break; // Order by which topic was created most recently case 'newness' : default : $topics_query = array( 'post_type' => bbp_get_topic_post_type(), 'post_parent' => $settings['parent_forum'], 'posts_per_page' => (int) $settings['max_shown'], 'post_status' => array( bbp_get_public_status_id(), bbp_get_closed_status_id() ), 'ignore_sticky_posts' => true, 'no_found_rows' => true, 'order' => 'DESC' ); break; } // Note: private and hidden forums will be excluded via the // bbp_pre_get_posts_normalize_forum_visibility action and function. $widget_query = new WP_Query( $topics_query ); // Bail if no topics are found if ( ! $widget_query->have_posts() ) { return; } echo $args['before_widget']; if ( !empty( $settings['title'] ) ) { echo $args['before_title'] . $settings['title'] . $args['after_title']; } ?> <ul> <?php while ( $widget_query->have_posts() ) : $widget_query->the_post(); $topic_id = bbp_get_topic_id( $widget_query->post->ID ); $author_link = ''; // Maybe get the topic author if ( ! empty( $settings['show_user'] ) ) : $author_link = bbp_get_topic_author_link( array( 'post_id' => $topic_id, 'type' => 'both', 'size' => 14 ) ); endif; ?> <li> <a class="bbp-forum-title" href="<?php bbp_topic_permalink( $topic_id ); ?>"><?php bbp_topic_title( $topic_id ); ?></a> <?php if ( ! empty( $author_link ) ) : ?> <?php printf( __( 'by %1$s', 'buddyboss' ), '<span class="topic-author">' . $author_link . '</span>' ); ?> <?php endif; ?> <?php if ( ! empty( $settings['show_date'] ) ) : ?> <div><?php bbp_topic_last_active_time( $topic_id ); ?></div> <?php endif; ?> </li> <?php endwhile; ?> </ul> <?php echo $args['after_widget']; // Reset the $post global wp_reset_postdata(); }
Changelog
Version | Description |
---|---|
bbPress (r2653) | 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.