'widget-simpletags', 'description' => __( 'Your most used tags in cloud format with dynamic color and many options', 'simpletags' ) ) ); } /** * Check if taxonomy exist and return it, otherwise return default post tags. * * @param array $instance * * @return string * @author Amaury Balmer */ public static function _get_current_taxonomy( $instance ) { if ( ! empty( $instance['taxonomy'] ) && taxonomy_exists( $instance['taxonomy'] ) ) { return $instance['taxonomy']; } return 'post_tag'; } /** * Default settings for widget * * @return void * @author Amaury Balmer */ public static function get_fields() { return array( 'taxonomy' => 'post_tag', 'title' => __( 'Tag cloud', 'simpletags' ), 'max' => 45, 'selectionby' => 'count', 'selection' => 'desc', 'orderby' => 'random', 'order' => 'asc', 'smini' => 8, 'smax' => 22, 'unit' => 'pt', 'format' => 'flat', 'color' => 1, 'cmini' => '#CCCCCC', 'cmax' => '#000000', 'xformat' => '', 'adv_usage' => '' ); } /** * Method for theme render * * @param array $args * @param array $instance * * @return void * @author Amaury Balmer */ public function widget( $args, $instance ) { extract( $args ); $current_taxonomy = self::_get_current_taxonomy( $instance ); // Build or not the name of the widget if ( ! empty( $instance['title'] ) ) { $title = $instance['title']; } else { if ( 'post_tag' == $current_taxonomy ) { $title = __( 'Tags', 'simpletags' ); } else { $tax = get_taxonomy( $current_taxonomy ); if ( isset( $tax->labels ) ) { $title = $tax->labels->name; } else { $title = $tax->name; } } } $title = apply_filters( 'widget_title', $title, $instance, $this->id_base ); // Set values and clean it foreach ( (array) self::get_fields() as $field => $field_value ) { ${$field} = trim( $instance[ $field ] ); } $param = ''; // Selection $param .= ( ! empty( $selectionby ) ) ? '&selectionby=' . $selectionby : '&selectionby=count'; $param .= ( ! empty( $selection ) ) ? '&selection=' . $selection : '&selection=desc'; // Order $param .= ( ! empty( $orderby ) ) ? '&orderby=' . $orderby : '&orderby=random'; $param .= ( ! empty( $order ) ) ? '&order=' . $order : '&order=asc'; // Max tags if ( (int) $max != 0 ) { $param .= '&number=' . $max; } // Size Mini if ( (int) $smini != 0 ) { $param .= '&smallest=' . $smini; } // Size Maxi if ( (int) $smax != 0 ) { $param .= '&largest=' . $smax; } // Unit if ( ! empty( $unit ) ) { $param .= '&unit=' . $unit; } // Format if ( ! empty( $format ) ) { $param .= '&format=' . $format; } // Use color ? if ( (int) $color == 0 ) { $param .= '&color=false'; } // Color mini if ( ! empty( $cmini ) ) { $param .= '&mincolor=' . $cmini; } // Color Max if ( ! empty( $cmax ) ) { $param .= '&maxcolor=' . $cmax; } // Xformat if ( ! empty( $xformat ) ) { $param .= '&xformat=' . $xformat; } // Advanced usage if ( ! empty( $adv_usage ) ) { if ( substr( $adv_usage, 0, 1 ) != '&' ) { $param .= '&'; } $param .= $adv_usage; } // Taxonomy $param .= '&taxonomy=' . $current_taxonomy; echo $before_widget; if ( ! empty( $title ) ) { echo $before_title . $title . $after_title; } st_tag_cloud( apply_filters( 'simple-tags-widget', 'title=' . $param, $instance ) ); // Use Widgets title and no ST title !! echo $after_widget; } /** * Update widget settings * * @param string $new_instance * @param string $old_instance * * @return void * @author Amaury Balmer */ public function update( $new_instance, $old_instance ) { $instance = $old_instance; foreach ( (array) self::get_fields() as $field => $field_value ) { $instance[ $field ] = strip_tags( $new_instance[ $field ] ); } return $instance; } /** * Admin form for widgets * * @param string $instance * * @return void * @author Amaury Balmer */ public function form( $instance ) { //Defaults $instance = wp_parse_args( (array) $instance, self::get_fields() ); ?>