'widget_recent_comments', 'description' => __( 'Your site’s most recent comments.', 'benjamin' ), 'customize_selective_refresh' => true, ); parent::__construct( 'recent-comments', __( 'Recent Comments', 'benjamin' ), $widget_ops ); $this->alt_option_name = 'widget_recent_comments'; if ( is_active_widget( false, false, $this->id_base ) || is_customize_preview() ) { add_action( 'wp_head', array( $this, 'recent_comments_style' ) ); } } /** * Outputs the default styles for the Recent Comments widget. * * @since 2.8.0 * @access public */ public function recent_comments_style() { /** * Filters the Recent Comments default widget styles. * * @since 3.1.0 * * @param bool $active Whether the widget is active. Default true. * @param string $id_base The widget ID. */ if ( ! current_theme_supports( 'widgets' ) // Temp hack #14876 || ! apply_filters( 'show_recent_comments_widget_style', true, $this->id_base ) ) return; ?> id_base}-dropdown-{$this->number}"; $first_dropdown = false; $output = ''; $output .= ''; $output .= $this->dropdown_js($dropdown_id); return $output; } private function menuStyleArgs($style = 'side_nav'){ if($style == 'side_nav'): $class = 'usa-sidenav-list'; elseif($style == 'nav_list'): $class = 'usa-unstyled-list'; else: $class = ''; endif; return $class; } public function menu($comments, $style) { // set up vars $style_args = $this->menuStyleArgs($style); $class = $style_args ? 'class="'.$style_args.'"' : ''; $li_class = ($style_args == 'list') ? 'class="recentcomments"' : ''; $output = ''; $output .= ''; return $output; } /** * Outputs the content for the current Recent Comments widget instance. * * @since 2.8.0 * @access public * * @param array $args Display arguments including 'before_title', 'after_title', * 'before_widget', and 'after_widget'. * @param array $instance Settings for the current Recent Comments widget instance. */ public function widget( $args, $instance ) { if ( ! isset( $args['widget_id'] ) ) $args['widget_id'] = $this->id; static $first_dropdown = true; $output = ''; $title = ( ! empty( $instance['title'] ) ) ? $instance['title'] : __( 'Recent Comments', 'benjamin' ); /** This filter is documented in wp-includes/widgets/class-wp-widget-pages.php */ $title = apply_filters( 'widget_title', $title, $instance, $this->id_base ); $number = ( ! empty( $instance['number'] ) ) ? absint( $instance['number'] ) : 5; $style = ! empty( $instance['menu_style'] ) ? $instance['menu_style'] : 'side_nav'; if ( ! $number ) $number = 5; /** * Filters the arguments for the Recent Comments widget. * * @since 3.4.0 * * @see WP_Comment_Query::query() for information on accepted arguments. * * @param array $comment_args An array of arguments used to retrieve the recent comments. */ $comments = get_comments( apply_filters( 'widget_comments_args', array( 'number' => $number, 'status' => 'approve', 'post_status' => 'publish' ) ) ); $output .= $args['before_widget']; if ( $title ) { $output .= $args['before_title'] . $title . $args['after_title']; } if($style == 'dropdown') { $output .= $this->dropdown($comments, $first_dropdown); } else { $output .= $this->menu($comments, $style); } $output .= $args['after_widget']; echo $output; } /** * Handles updating settings for the current Recent Comments widget instance. * * @since 2.8.0 * @access public * * @param array $new_instance New settings for this instance as input by the user via * WP_Widget::form(). * @param array $old_instance Old settings for this instance. * @return array Updated settings to save. */ public function update( $new_instance, $old_instance ) { $instance = $old_instance; $instance['title'] = sanitize_text_field( $new_instance['title'] ); $instance['number'] = absint( $new_instance['number'] ); if ( ! empty( $new_instance['menu_style'] ) ) { $instance['menu_style'] = sanitize_text_field($new_instance['menu_style']); } return $instance; } /** * Outputs the settings form for the Recent Comments widget. * * @since 2.8.0 * @access public * * @param array $instance Current settings. */ public function form( $instance ) { $title = isset( $instance['title'] ) ? $instance['title'] : ''; $number = isset( $instance['number'] ) ? absint( $instance['number'] ) : 5; $saved_style = isset( $instance['menu_style'] ) ? $instance['menu_style'] : ''; ?>