'themeidol-author', 'description' => __('Displays an author badge for a specific user.', 'themeidol-all-widget')); parent::__construct('themeidol-author', __('Themeidol - Author Badge', 'themeidol-all-widget'), $args); // Register site styles and scripts add_action( 'wp_enqueue_scripts', array( $this, 'register_widget_styles' ) ); // Refreshing the widget's cached output with each new post add_action( 'save_post', array( $this, 'flush_widget_cache' ) ); add_action( 'deleted_post', array( $this, 'flush_widget_cache' ) ); add_action( 'delete_attachment', array( $this, 'flush_group_cache' ) ); add_action( 'switch_theme', array( $this, 'flush_widget_cache' ) ); } function widget($args, $instance){ // Check if there is a cached output $cache = (array) wp_cache_get( 'themeidol-authorbadge', 'widget' ); if(!is_array($cache)) $cache = array(); if(isset($cache[$args['widget_id']])){ echo $cache[$args['widget_id']]; return; } extract($args); $widget_id = str_replace('-', '_', $widget_id); $title = apply_filters('widget_title', esc_attr($instance['title'])); $userid = intval(esc_attr($instance['user'])); $description = esc_attr(esc_attr($instance['description'])); $userdata = get_userdata($userid); $size = intval($instance['size']); if($size == 0) $size = 100; $outputprev=''; $output = ''; $output .= '
'; // Adding the custom class idol-widget for default widget class if (strpos($before_widget, 'widget ') !== false) { $before_widget = preg_replace('/widget /', "idol-widget ", $before_widget, 1); } echo $before_widget; if($title != '') { $outputprev =$before_title.$title.$after_title;} echo $outputprev.$output; echo $after_widget; $cache[ $args['widget_id'] ] = $before_widget.$outputprev.$output.$after_widget; wp_cache_set( 'themeidol-authorbadge', $cache, 'widget' ); } public function flush_widget_cache() { wp_cache_delete( 'themeidol-authorbadge', 'widget' ); } /** * Registers and enqueues widget-specific styles. */ public function register_widget_styles() { wp_enqueue_style( 'themeidol-authotstyle', THEMEIDOL_WIDGET_CSS_URL.'author-style.css'); } // end register_widget_styles function update($new_instance, $old_instance){ $instance = $old_instance; $instance['title'] = strip_tags(esc_attr($new_instance['title'])); $instance['user'] = intval($new_instance['user']); $instance['size'] = intval($new_instance['size']); $instance['description'] = strip_tags(esc_attr($new_instance['description'])); return $instance; } function form($instance){ $instance = wp_parse_args((array) $instance, array('title' => '', 'user' => '', 'description' => '', 'size' => 100)); $title = esc_attr($instance['title']); $user = esc_attr($instance['user']); $description = esc_attr($instance['description']); $size = intval($instance['size']); $user_list = get_users('orderby=nicename'); ?>