WordPress.org

Make WordPress Core

Ticket #11612: 11612.2.diff

File 11612.2.diff, 2.1 KB (added by dd32, 8 years ago)

Adds extra is_taxonomy() validation

  • wp-includes/default-widgets.php

     
    977978        function widget( $args, $instance ) {
    978979                extract($args);
    979980                $title = apply_filters('widget_title', empty($instance['title']) ? __('Tags') : $instance['title']);
     981                $taxonomy = !empty($instance['taxonomy']) && is_taxonomy($instance['taxonomy']) ? $instance['taxonomy'] : 'post_tag';
    980982
    981983                echo $before_widget;
    982984                if ( $title )
    983985                        echo $before_title . $title . $after_title;
    984986                echo '<div>';
    985                 wp_tag_cloud(apply_filters('widget_tag_cloud_args', array()));
     987                wp_tag_cloud( apply_filters('widget_tag_cloud_args', array('taxonomy' => $taxonomy) ) );
    986988                echo "</div>\n";
    987989                echo $after_widget;
    988990        }
    989991
    990992        function update( $new_instance, $old_instance ) {
    991993                $instance['title'] = strip_tags(stripslashes($new_instance['title']));
     994                $instance['taxonomy'] = stripslashes($new_instance['taxonomy']);
    992995                return $instance;
    993996        }
    994997
    995998        function form( $instance ) {
     999                $current_tax = isset($instance['taxonomy']) && is_taxonomy($instance['taxonomy']) ? $instance['taxonomy'] : 'post_tag';
    9961000?>
    9971001        <p><label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title:') ?></label>
    9981002        <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
     1003        <p><label for="<?php echo $this->get_field_id('taxonomy'); ?>"><?php _e('Taxonomy:') ?></label>
     1004        <select class="widefat" id="<?php echo $this->get_field_id('taxonomy'); ?>" name="<?php echo $this->get_field_name('taxonomy'); ?>">
     1005        <?php foreach ( get_object_taxonomies('post') as $tax ) :
     1006                                $t = get_taxonomy($tax);
     1007                                if ( empty($t->label) )
     1008                                        continue;
     1009        ?>
     1010                <option value="<?php echo esc_attr($tax) ?>" <?php selected($tax, $current_tax) ?>><?php echo $t->label ?></option>
     1011        <?php endforeach; ?>
     1012        </select></p><?php
    10001013        }
    10011014}
    10021015