Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class SPG_Widget_Recent_Comments extends WP_Widget {
- function __construct() {
- $widget_ops = array('classname' => 'spg_widget_recent_comments', 'description' => __( 'The most recent comments' ) );
- parent::__construct('spg-recent-comments', __('Recent Comments - Categorized'), $widget_ops);
- $this->alt_option_name = 'spg_widget_recent_comments';
- if ( is_active_widget(false, false, $this->id_base) )
- add_action( 'wp_head', array(&$this, 'recent_comments_style') );
- add_action( 'comment_post', array(&$this, 'flush_widget_cache') );
- add_action( 'transition_comment_status', array(&$this, 'flush_widget_cache') );
- }
- function recent_comments_style() {
- if ( ! current_theme_supports( 'widgets' ) // Temp hack #14876
- || ! apply_filters( 'show_recent_comments_widget_style', true, $this->id_base ) )
- return;
- ?>
- <style type="text/css">.recentcomments a{display:inline !important;padding:0 !important;margin:0 !important;}</style>
- <?php
- }
- function flush_widget_cache() {
- wp_cache_delete('spg_widget_recent_comments', 'widget');
- }
- function widget( $args, $instance ) {
- global $comments, $comment;
- $cache = wp_cache_get('spg_widget_recent_comments', 'widget');
- if ( ! is_array( $cache ) )
- $cache = array();
- if ( ! isset( $args['widget_id'] ) )
- $args['widget_id'] = $this->id;
- if ( isset( $cache[ $args['widget_id'] ] ) ) {
- echo $cache[ $args['widget_id'] ];
- return;
- }
- extract($args, EXTR_SKIP);
- $output = '';
- $title = apply_filters( 'widget_title', empty( $instance['title'] ) ? __( 'Recent Comments' ) : $instance['title'], $instance, $this->id_base );
- if ( empty( $instance['number'] ) || ! $number = absint( $instance['number'] ) )
- $number = 5;
- $category_name = empty( $instance['category_name'] ) ? '' : $instance['category_name'];
- $comments = get_comments( apply_filters( 'widget_comments_args', array( 'number' => $number, 'status' => 'approve', 'post_status' => 'publish' ) ) );
- $output .= $before_widget;
- if ( $title )
- $output .= $before_title . $title . $after_title;
- $output .= '<ul id="recentcomments">';
- if ( $comments ) {
- foreach ( (array) $comments as $comment) {
- $output .= '<li class="recentcomments">' . /* translators: comments widget: 1: comment author, 2: post link */ sprintf(_x('%1$s on %2$s', 'widgets'), get_comment_author_link(), '<a href="' . esc_url( get_comment_link($comment->comment_ID) ) . '">' . get_the_title($comment->comment_post_ID) . '</a>') . '</li>';
- }
- }
- $output .= '</ul>';
- $output .= $after_widget;
- echo $output;
- $cache[$args['widget_id']] = $output;
- wp_cache_set('widget_recent_comments', $cache, 'widget');
- }
- function update( $new_instance, $old_instance ) {
- $instance = $old_instance;
- $instance['title'] = strip_tags($new_instance['title']);
- $instance['number'] = absint( $new_instance['number'] );
- $instance['category_name'] = strip_tags( $new_instance['category_name'] );
- $this->flush_widget_cache();
- $alloptions = wp_cache_get( 'alloptions', 'options' );
- if ( isset($alloptions['widget_recent_comments']) )
- delete_option('widget_recent_comments');
- return $instance;
- }
- function form( $instance ) {
- $title = isset($instance['title']) ? esc_attr($instance['title']) : '';
- $number = isset($instance['number']) ? absint($instance['number']) : 5;
- $category_name = esc_attr( $instance['category_name'] );
- ?>
- <p><label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title:'); ?></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('category_name'); ?>"><?php _e( 'Only from category:' ); ?></label> <input type="text" value="<?php echo $category_name; ?>" name="<?php echo $this->get_field_name('category_name'); ?>" id="<?php echo $this->get_field_id('category_name'); ?>" class="widefat" />
- <br />
- <small><?php _e( 'Category slug, separated by commas.' ); ?></small>
- </p>
- <p><label for="<?php echo $this->get_field_id('number'); ?>"><?php _e('Number of comments to show:'); ?></label>
- <input id="<?php echo $this->get_field_id('number'); ?>" name="<?php echo $this->get_field_name('number'); ?>" type="text" value="<?php echo $number; ?>" size="3" /></p>
- <?php
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement