WordPress.org

Make WordPress Core

Ticket #21165: 21165.6.diff

File 21165.6.diff, 3.3 KB (added by wonderboymusic, 4 years ago)
  • src/wp-includes/default-widgets.php

     
    653653        public function widget( $args, $instance ) {
    654654                static $first_dropdown = true;
    655655
     656                $current_taxonomy = $this->_get_current_taxonomy( $instance );
     657
    656658                /** This filter is documented in wp-includes/default-widgets.php */
    657659                $title = apply_filters( 'widget_title', empty( $instance['title'] ) ? __( 'Categories' ) : $instance['title'], $instance, $this->id_base );
    658660
     
    665667                        echo $args['before_title'] . $title . $args['after_title'];
    666668                }
    667669
     670                $tax = get_taxonomy( $current_taxonomy );
    668671                $cat_args = array(
    669672                        'orderby'      => 'name',
    670673                        'show_count'   => $c,
    671                         'hierarchical' => $h
     674                        'hierarchical' => $h,
     675                        'taxonomy' => $current_taxonomy
    672676                );
    673677
    674678                if ( $d ) {
     
    677681
    678682                        echo '<label class="screen-reader-text" for="' . esc_attr( $dropdown_id ) . '">' . $title . '</label>';
    679683
    680                         $cat_args['show_option_none'] = __( 'Select Category' );
     684                        $cat_args['show_option_none'] = $tax->labels->select_name;
    681685                        $cat_args['id'] = $dropdown_id;
    682686
    683687                        /**
     
    740744                $instance['count'] = !empty($new_instance['count']) ? 1 : 0;
    741745                $instance['hierarchical'] = !empty($new_instance['hierarchical']) ? 1 : 0;
    742746                $instance['dropdown'] = !empty($new_instance['dropdown']) ? 1 : 0;
     747                $instance['taxonomy'] = stripslashes( $new_instance['taxonomy'] );
    743748
    744749                return $instance;
    745750        }
     
    754759                $count = isset($instance['count']) ? (bool) $instance['count'] :false;
    755760                $hierarchical = isset( $instance['hierarchical'] ) ? (bool) $instance['hierarchical'] : false;
    756761                $dropdown = isset( $instance['dropdown'] ) ? (bool) $instance['dropdown'] : false;
     762                $current_taxonomy = $this->_get_current_taxonomy( $instance );
    757763?>
    758764                <p><label for="<?php echo $this->get_field_id('title'); ?>"><?php _e( 'Title:' ); ?></label>
    759765                <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>
    760766
     767                <p><label for="<?php echo $this->get_field_id( 'taxonomy' ); ?>"><?php _e( 'Taxonomy:' ) ?></label>
     768                <select class="widefat" id="<?php echo $this->get_field_id( 'taxonomy' ); ?>" name="<?php echo $this->get_field_name( 'taxonomy' ); ?>">
     769                <?php foreach ( get_taxonomies() as $taxonomy ) :
     770                        $tax = get_taxonomy( $taxonomy );
     771                        if ( ! $tax->hierarchical || empty( $tax->labels->name ) ) {
     772                                continue;
     773                        }
     774                        ?>
     775                        <option value="<?php echo esc_attr( $taxonomy ) ?>" <?php selected( $taxonomy, $current_taxonomy ) ?>><?php echo $tax->labels->name; ?></option>
     776                <?php endforeach; ?>
     777                </select></p>
     778
    761779                <p><input type="checkbox" class="checkbox" id="<?php echo $this->get_field_id('dropdown'); ?>" name="<?php echo $this->get_field_name('dropdown'); ?>"<?php checked( $dropdown ); ?> />
    762780                <label for="<?php echo $this->get_field_id('dropdown'); ?>"><?php _e( 'Display as dropdown' ); ?></label><br />
    763781
     
    769787<?php
    770788        }
    771789
     790        function _get_current_taxonomy($instance) {
     791                if ( ! empty( $instance['taxonomy'] ) && taxonomy_exists( $instance['taxonomy'] ) ) {
     792                        return $instance['taxonomy'];
     793                }
     794
     795                return 'category';
     796        }
     797
    772798}
    773799
    774800/**