WordPress.org

Make WordPress Core

Ticket #16125: tag_cloud.diff

File tag_cloud.diff, 3.6 KB (added by GautamGupta, 7 years ago)
  • wp-includes/default-widgets.php

     
    993993        function widget( $args, $instance ) {
    994994                extract($args);
    995995                $current_taxonomy = $this->_get_current_taxonomy($instance);
     996
     997                if ( !taxonomy_exists( $current_taxonomy ) )
     998                        return;
     999
    9961000                if ( !empty($instance['title']) ) {
    9971001                        $title = $instance['title'];
    9981002                } else {
     
    10211025        }
    10221026
    10231027        function form( $instance ) {
    1024                 $current_taxonomy = $this->_get_current_taxonomy($instance);
    1025 ?>
    1026         <p><label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title:') ?></label>
    1027         <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>
    1028         <p><label for="<?php echo $this->get_field_id('taxonomy'); ?>"><?php _e('Taxonomy:') ?></label>
    1029         <select class="widefat" id="<?php echo $this->get_field_id('taxonomy'); ?>" name="<?php echo $this->get_field_name('taxonomy'); ?>">
    1030         <?php foreach ( get_object_taxonomies('post') as $taxonomy ) :
    1031                                 $tax = get_taxonomy($taxonomy);
    1032                                 if ( !$tax->show_tagcloud || empty($tax->labels->name) )
    1033                                         continue;
    1034         ?>
    1035                 <option value="<?php echo esc_attr($taxonomy) ?>" <?php selected($taxonomy, $current_taxonomy) ?>><?php echo $tax->labels->name; ?></option>
    1036         <?php endforeach; ?>
    1037         </select></p><?php
     1028                ?>
     1029
     1030                <p>
     1031                        <label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title:') ?></label>
     1032                        <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'] );} ?>" />
     1033                </p>
     1034
     1035                <?php
     1036
     1037                $current_taxonomy = $this->_get_current_taxonomy( $instance );
     1038                $taxonomies       = get_taxonomies( array( 'show_tagcloud' => true ), 'object' );
     1039
     1040                switch ( count( $taxonomies ) ) :
     1041
     1042                        case 0 : ?>
     1043
     1044                                <p><?php _e( 'Sorry, but there are no taxonomies for which a tag cloud could be made and therefore, no tag cloud would be displayed!' ); ?></p>
     1045                                <input type="hidden" id="<?php echo $this->get_field_id( 'taxonomy' ); ?>" name="<?php echo $this->get_field_name( 'taxonomy' ); ?>" value="" />
     1046
     1047                                <?php break;
     1048
     1049                        case 1 :
     1050
     1051                                $taxonomy = array_pop( array_keys( $taxonomies ) ); ?>
     1052
     1053                                <input type="hidden" id="<?php echo $this->get_field_id( 'taxonomy' ); ?>" name="<?php echo $this->get_field_name( 'taxonomy' ); ?>" value="<?php echo esc_attr( $taxonomy ); ?>" />
     1054
     1055                                <?php break;
     1056
     1057                        default : ?>
     1058
     1059                                <p>
     1060                                        <label for="<?php echo $this->get_field_id('taxonomy'); ?>"><?php _e('Taxonomy:') ?></label>
     1061                                        <select class="widefat" id="<?php echo $this->get_field_id('taxonomy'); ?>" name="<?php echo $this->get_field_name('taxonomy'); ?>">
     1062                                                <?php foreach ( $taxonomies as $taxonomy => $tax ) : ?>
     1063                                                        <option value="<?php echo esc_attr($taxonomy) ?>" <?php selected($taxonomy, $current_taxonomy) ?>><?php echo $tax->labels->name; ?></option>
     1064                                                <?php endforeach; ?>
     1065                                        </select>
     1066                                </p>
     1067
     1068                <?php endswitch;
     1069
    10381070        }
    10391071
    10401072        function _get_current_taxonomy($instance) {
    10411073                if ( !empty($instance['taxonomy']) && taxonomy_exists($instance['taxonomy']) )
    10421074                        return $instance['taxonomy'];
    10431075
    1044                 return 'post_tag';
     1076                // Although we say no tag cloud would be displayed in the admin section, we can still do a last check on 'post_tag' taxonomy
     1077                // This shouldn't happen anyway
     1078                return taxonomy_exists( 'post_tag' ) ? 'post_tag' : '';
    10451079        }
    10461080}
    10471081