'blogbuster-widget blogbuster_latest_posts', 'description' => __( 'Display latest posts in various layouts.', 'blogbuster' ), 'customize_selective_refresh' => true, ); parent::__construct( 'blogbuster_latest_posts', __( 'MT: Latest Posts', 'blogbuster' ), $widget_ops ); } /** * Helper function that defines widget fields. * * The array is used in the update and form functions. */ private function widget_fields() { $fields = array( 'widget_title' => array( 'widget_field_name' => 'widget_title', 'widget_field_title' => __( 'Widget Title', 'blogbuster' ), 'widget_field_default' => __( 'Latest Posts', 'blogbuster' ), 'widget_field_type' => 'title', 'widget_field_placeholder' => __( 'Widget Title', 'blogbuster' ) ), 'posts_query_filter' => array( 'widget_field_name' => 'posts_query_filter', 'widget_field_title' => __( 'Posts Query Filter', 'blogbuster' ), 'widget_field_default' => 'latest', 'widget_field_type' => 'select', 'widget_field_options' => blogbuster_posts_query_filter_choices() ), 'posts_count' => array( 'widget_field_name' => 'posts_count', 'widget_field_title' => __( 'No. of posts', 'blogbuster' ), 'widget_field_default' => 5, 'widget_field_type' => 'number', 'input_attr' => array( 'min' => 1, 'max' => 10, 'step' => 1 ) ), ); return $fields; } /** * Front-end display of the widget. * * @see WP_Widget::widget() * * @param array $args Widget arguments. * @param array $instance Saved values from the database. */ public function widget( $args, $instance ) { extract( $args ); if ( empty( $instance ) ) { return; } $widget_title = empty( $instance['widget_title'] ) ? '' : $instance['widget_title']; $posts_query_filter = empty( $instance['posts_query_filter'] ) ? 'latest' : $instance['posts_query_filter']; $posts_count = empty( $instance['posts_count'] ) ? 5 : $instance['posts_count']; $latest_args = array( 'posts_per_page' => absint( $posts_count ), 'ignore_sticky_posts' => true ); if ( 'random' === $posts_query_filter ) { $latest_args['orderby'] = 'rand'; } $latest_query = new WP_Query( $latest_args ); $widget_custom_classes[] = 'latest-posts-wrapper'; echo $before_widget; ?>
post_count; if ( $latest_query->have_posts() ) : while ( $latest_query->have_posts() ) : $latest_query->the_post(); $current_post = $latest_query->current_post; $post_img = has_post_thumbnail() ? 'has-image' : 'no-image'; $thumb_size = 'thumbnail'; ?>
', '' ); ?>
widget_fields(); // Loop through fields foreach ( $widget_fields as $widget_field ) { extract( $widget_field ); // Use helper function to get updated field values $instance[$widget_field_name] = blogbuster_widget_updated_field_value( $widget_field, $new_instance[$widget_field_name] ); } return $instance; } /** * Back-end widget form. * * @see WP_Widget::form() * * @param array $instance Previously saved values from the database. * * @uses blogbuster_show_widget_field() Defined in blogbuster-widgets-helper.php */ public function form( $instance ) { $widget_fields = $this->widget_fields(); // Loop through fields foreach ( $widget_fields as $widget_field ) { // Make array elements available as variables extract( $widget_field ); if ( empty( $instance ) && isset( $widget_field_default ) ) { $widget_field_value = $widget_field_default; } elseif ( empty( $instance ) ) { $widget_field_value = ''; } else { $widget_field_value = $instance[$widget_field_name]; } blogbuster_show_widget_field( $this, $widget_field, $widget_field_value ); } } } //end Class Blogbuster_Latest_Posts