BP_Core_Network_Posts_Widget
Network Posts Widget.
Description
Source
File: bp-core/classes/class-bp-core-network-posts-widget.php
class BP_Core_Network_Posts_Widget extends WP_Widget { /** * Constructor method. * * @since 1.5.0 */ public function __construct() { // Setup widget name & description. $name = _x( 'BuddyBoss - Network Posts', 'widget name', 'buddyboss' ); $description = __( 'A dynamic list of network posts', 'buddyboss' ); // Call WP_Widget constructor. parent::__construct( false, $name, array( 'description' => $description, 'classname' => 'network_posts_widget buddypress widget', 'customize_selective_refresh' => true, ) ); if ( is_customize_preview() || is_active_widget( false, false, $this->id_base ) ) { add_action( 'bp_enqueue_scripts', array( $this, 'enqueue_scripts' ) ); } } /** * Enqueue scripts. * * @since 2.6.0 */ public function enqueue_scripts() { wp_enqueue_script( 'bp-widget-members' ); } /** * Display the Members widget. * * @since 1.0.3 * * @see WP_Widget::widget() for description of parameters. * * @param array $args Widget arguments. * @param array $instance Widget settings, as saved by the user. */ public function widget( $args, $instance ) { // Get widget settings. $settings = $this->parse_settings( $instance ); /** This filter is documented in wp-includes/widgets/class-wp-widget-pages.php */ $title = apply_filters( 'widget_title', $settings['title'], $instance, $this->id_base ); $number = (!empty( $instance[ 'number' ] ) ) ? absint( $instance[ 'number' ] ) : 5; $show_date = isset( $instance[ 'show_date' ] ) ? $instance[ 'show_date' ] : false; $show_image = isset( $instance[ 'show_image' ] ) ? $instance[ 'show_image' ] : true; if ( ! function_exists( 'get_sites' ) ){ return; } $blogs = get_sites(array( 'fields' => 'ids', 'orderby' => 'last_updated', 'order' => 'DESC', )); $args['before_widget']; if ( $title ) { echo $args['before_title'] . $title . $args['after_title']; } if( $blogs ) { ?> <ul id="network-list" class="item-list" aria-live="polite" aria-relevant="all" aria-atomic="true"> <?php foreach ( $blogs as $blog_key ) { switch_to_blog($blog_key); /** * Filters the arguments for the Recent Posts widget. * * @since 3.4.0 * * @see WP_Query::get_posts() * * @param array $args An array of arguments used to retrieve the recent posts. */ $r = new WP_Query( apply_filters( 'widget_network_posts_args', array( 'posts_per_page' => $number, 'no_found_rows' => true, 'post_status' => 'publish', 'ignore_sticky_posts' => true ) ) ); if ( $r->have_posts() ) { ?> <?php while ( $r->have_posts() ) : $r->the_post(); ?> <li class="vcard"> <div class="item-avatar"> <a href="<?php echo get_author_posts_url( get_the_author_meta( 'ID' ), get_the_author_meta( 'user_nicename' ) ); ?>"> <?php echo get_avatar( get_the_author_meta( 'ID' ), 80 ); ?> </a> </div> <div class="item"> <div class="item-title"> <a class="post-author" href="<?php echo get_author_posts_url( get_the_author_meta( 'ID' ), get_the_author_meta( 'user_nicename' ) ); ?>"><?php the_author(); ?></a> <span class="netowrk-post-type">created a post:</span> </div> <div class="item-data"> <span class="netowrk-post-content"> <a href="<?php the_permalink(); ?>" class="bb-title"><?php echo wp_trim_words( the_title( '', '', false ), 6, '…' ); ?></a> </span> <?php if ( $show_image && has_post_thumbnail() ) { ?> <div class="data-photo"><a href="<?php the_permalink(); ?>" title="<?php echo esc_attr( sprintf( __( 'Permalink to %s', 'buddyboss' ), the_title_attribute( 'echo=0' ) ) ); ?>" class="entry-media entry-img"> <?php the_post_thumbnail(); ?> </a> </div> <?php } ?> <?php if ( $show_date ) : ?> <br/><span class="netowrk-post-activity"><?php echo get_the_date(); ?></span> <?php endif; ?> </div> </div> </li> <?php endwhile; ?> <?php // Reset the global $the_post as this query will have stomped on it wp_reset_postdata(); } // Back the current blog restore_current_blog(); } ?> </ul><?php } echo $args['after_widget']; } /** * Update the Members widget options. * * @since 1.0.3 * * @param array $new_instance The new instance options. * @param array $old_instance The old instance options. * @return array $instance The parsed options to be saved. */ public function update( $new_instance, $old_instance ) { $instance = $old_instance; $instance['title'] = strip_tags( $new_instance['title'] ); $instance[ 'number' ] = (int) $new_instance[ 'number' ]; $instance[ 'show_date' ] = isset( $new_instance[ 'show_date' ] ) ? (bool) $new_instance[ 'show_date' ] : false; $instance[ 'show_image' ] = isset( $new_instance[ 'show_image' ] ) ? (bool) $new_instance[ 'show_image' ] : false; return $instance; } /** * Output the Members widget options form. * * @since 1.0.3 * * @param array $instance Widget instance settings. * @return void */ public function form( $instance ) { // Get widget settings. $title = isset( $instance[ 'title' ] ) ? esc_attr( $instance[ 'title' ] ) : __( 'Recent Networkside Posts', 'buddyboss' ); $number = isset( $instance[ 'number' ] ) ? absint( $instance[ 'number' ] ) : 1; $show_date = isset( $instance[ 'show_date' ] ) ? (bool) $instance[ 'show_date' ] : true; $show_image = isset( $instance[ 'show_image' ] ) ? (bool) $instance[ 'show_image' ] : true; ?> <p><label for="<?php echo $this->get_field_id( 'title' ); ?>"><?php _e( 'Title:', 'buddyboss' ); ?></label> <input class="widefat" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" type="text" value="<?php echo $title; ?>" /></p> <p><label for="<?php echo $this->get_field_id( 'number' ); ?>"><?php _e( 'Number of posts to show for each blog:', 'buddyboss' ); ?></label> <input class="tiny-text" id="<?php echo $this->get_field_id( 'number' ); ?>" name="<?php echo $this->get_field_name( 'number' ); ?>" type="number" step="1" min="1" value="<?php echo $number; ?>" size="3" /></p> <p><input class="checkbox" type="checkbox"<?php checked( $show_date ); ?> id="<?php echo $this->get_field_id( 'show_date' ); ?>" name="<?php echo $this->get_field_name( 'show_date' ); ?>" /> <label for="<?php echo $this->get_field_id( 'show_date' ); ?>"><?php _e( 'Display post date?', 'buddyboss' ); ?></label></p> <p><input class="checkbox" type="checkbox"<?php checked( $show_image ); ?> id="<?php echo $this->get_field_id( 'show_image' ); ?>" name="<?php echo $this->get_field_name( 'show_image' ); ?>" /> <label for="<?php echo $this->get_field_id( 'show_image' ); ?>"><?php _e( 'Display post featured image?', 'buddyboss' ); ?></label></p> <?php } /** * Merge the widget settings into defaults array. * * @since 2.3.0 * * * @param array $instance Widget instance settings. * @return array */ public function parse_settings( $instance = array() ) { return bp_parse_args( $instance, array( 'title' => __( 'Recent Networkside Posts', 'buddyboss' ), 'number' => 1, 'show_date' => true, 'show_image' => true ), 'bb_network_posts_widget_settings' ); } }
Changelog
Version | Description |
---|---|
1.0.3 | Introduced. |
Methods
- __construct — Constructor method.
- enqueue_scripts — Enqueue scripts.
- form — Output the Members widget options form.
- parse_settings — Merge the widget settings into defaults array.
- update — Update the Members widget options.
- widget — Display the Members widget.
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.