Make WordPress Core


Ignore:
Timestamp:
01/10/2008 09:39:35 AM (19 years ago)
Author:
matt
Message:

New experimental category interface, fixes #5618. Hat tip: mdawaffe.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-admin/includes/template.php

    r6570 r6588  
    119119}
    120120
    121 function get_nested_categories( $default = 0, $parent = 0 ) {
     121function wp_set_checked_post_categories( $default = 0 ) {
    122122        global $post_ID, $checked_categories;
    123123
    … …  
    135135        }
    136136
    137         $cats = get_categories("parent=$parent&hide_empty=0&fields=ids");
    138 
    139         $result = array ();
    140         if ( is_array( $cats ) ) {
    141                 foreach ( $cats as $cat) {
    142                         $result[$cat]['children'] = get_nested_categories( $default, $cat);
    143                         $result[$cat]['cat_ID'] = $cat;
    144                         $result[$cat]['checked'] = in_array( $cat, $checked_categories );
    145                         $result[$cat]['cat_name'] = get_the_category_by_ID( $cat);
     137}
     138function get_nested_categories( $default = 0, $parent = 0 ) {
     139        global $checked_categories;
     140
     141        wp_set_checked_post_categories( $default = 0 );
     142
     143        if ( is_object($parent) ) { // Hack: if passed a category object, will return nested cats with parent as root
     144                $root = array(
     145                        'children' => get_nested_categories( $default, $parent->term_id ),
     146                        'cat_ID' => $parent->term_id,
     147                        'checked' => isset($parent->_is_checked) && $parent->_is_checked,
     148                        'cat_name' => get_the_category_by_ID( $parent->term_id )
     149                );
     150                $result = array( $parent->term_id => $root );
     151        } else {
     152                $parent = (int) $parent;
     153
     154                $cats = get_categories("parent=$parent&hide_empty=0&fields=ids");
     155
     156                $result = array();
     157                if ( is_array( $cats ) ) {
     158                        foreach ( $cats as $cat ) {
     159                                $result[$cat]['children'] = get_nested_categories( $default, $cat );
     160                                $result[$cat]['cat_ID'] = $cat;
     161                                $result[$cat]['checked'] = in_array( $cat, $checked_categories );
     162                                $result[$cat]['cat_name'] = get_the_category_by_ID( $cat );
     163                        }
    146164                }
    147165        }
    … …  
    166184}
    167185
    168 function dropdown_categories( $default = 0 ) {
    169         write_nested_categories( get_nested_categories( $default) );
     186function dropdown_categories( $default = 0, $parent = 0 ) {
     187        write_nested_categories( get_nested_categories( $default, $parent ) );
     188}
     189
     190function wp_popular_categories_checklist( $default = 0, $number = 10 ) {
     191        global $checked_categories;
     192
     193        wp_set_checked_post_categories( $default );
     194
     195        $categories = get_categories( array( 'orderby' => 'count', 'order' => 'DESC', 'number' => $number ) );
     196
     197        foreach ( (array) $categories as $category ) {
     198                $id = "popular-category-$category->term_id";
     199                $checked = in_array( $category->term_id, $checked_categories ) ? ' checked="checked"' : '';             
     200                ?>
     201
     202                <li id="<?php echo $id; ?>">
     203                        <label class="selectit" for="in-<?php echo $id; ?>">
     204                                <input id="in-<?php echo $id; ?>" type="checkbox" name="post_category[]" value="<?php echo (int) $category->term_id; ?>"<?php echo $checked; ?> />
     205                                <?php echo wp_specialchars( apply_filters( 'the_category', $category->name ) ); ?>
     206                        </label>
     207                </li>
     208
     209                <?php
     210        }
    170211}
    171212
Note: See TracChangeset for help on using the changeset viewer.