WordPress.org

Make WordPress Core

Changeset 13276


Ignore:
Timestamp:
02/21/10 02:47:58 (6 years ago)
Author:
dd32
Message:

Allow the Tag Cloud Widget to support non-tag taxonomies. Props Sivel. Fixes #11612

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-includes/default-widgets.php

    r13268 r13276  
    977977    function widget( $args, $instance ) { 
    978978        extract($args); 
    979         $title = apply_filters('widget_title', empty($instance['title']) ? __('Tags') : $instance['title'], $instance, $this->id_base); 
     979        $current_taxonomy = $this->_get_current_taxonomy($instance); 
     980        if ( !empty($instance['title']) ) { 
     981            $title = $instance['title']; 
     982        } else { 
     983            if ( 'post_tag' == $current_taxonomy ) { 
     984                $title = __('Tags'); 
     985            } else { 
     986                $tax = get_taxonomy($current_taxonomy); 
     987                $title = $tax->label; 
     988            } 
     989        } 
     990        $title = apply_filters('widget_title', $title, $instance, $this->id_base); 
    980991 
    981992        echo $before_widget; 
     
    983994            echo $before_title . $title . $after_title; 
    984995        echo '<div>'; 
    985         wp_tag_cloud(apply_filters('widget_tag_cloud_args', array())); 
     996        wp_tag_cloud( apply_filters('widget_tag_cloud_args', array('taxonomy' => $current_taxonomy) ) ); 
    986997        echo "</div>\n"; 
    987998        echo $after_widget; 
     
    9901001    function update( $new_instance, $old_instance ) { 
    9911002        $instance['title'] = strip_tags(stripslashes($new_instance['title'])); 
     1003        $instance['taxonomy'] = stripslashes($new_instance['taxonomy']); 
    9921004        return $instance; 
    9931005    } 
    9941006 
    9951007    function form( $instance ) { 
     1008        $current_taxonomy = $this->_get_current_taxonomy($instance); 
    9961009?> 
    9971010    <p><label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title:') ?></label> 
    9981011    <input type="text" class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" value="<?php if (isset ( $instance['title'])) {echo esc_attr( $instance['title'] );} ?>" /></p> 
    999 <?php 
     1012    <p><label for="<?php echo $this->get_field_id('taxonomy'); ?>"><?php _e('Taxonomy:') ?></label> 
     1013    <select class="widefat" id="<?php echo $this->get_field_id('taxonomy'); ?>" name="<?php echo $this->get_field_name('taxonomy'); ?>"> 
     1014    <?php foreach ( get_object_taxonomies('post') as $taxonomy ) : 
     1015                $tax = get_taxonomy($taxonomy); 
     1016                if ( !$tax->show_tagcloud || empty($tax->label) ) 
     1017                    continue; 
     1018    ?> 
     1019        <option value="<?php echo esc_attr($taxonomy) ?>" <?php selected($taxonomy, $current_taxonomy) ?>><?php echo $tax->label ?></option> 
     1020    <?php endforeach; ?> 
     1021    </select></p><?php 
     1022    } 
     1023 
     1024    function _get_current_taxonomy($instance) { 
     1025        if ( !empty($instance['taxonomy']) && is_taxonomy($instance['taxonomy']) )  
     1026            return $instance['taxonomy']; 
     1027 
     1028        return 'post_tag'; 
    10001029    } 
    10011030} 
Note: See TracChangeset for help on using the changeset viewer.