WordPress.org

Make WordPress Core

Ticket #2621: wp_category_checklist.diff

File wp_category_checklist.diff, 2.5 KB (added by ryan, 6 years ago)

wp_category_checklist()

  • wp-admin/includes/template.php

     
    241241        } 
    242242} 
    243243 
     244class Walker_Category_Checklist extends Walker { 
     245        var $tree_type = 'category'; 
     246        var $db_fields = array ('parent' => 'parent', 'id' => 'term_id'); //TODO: decouple this 
     247 
     248        function start_lvl($output, $depth, $args) { 
     249                $indent = str_repeat("\t", $depth); 
     250                $output .= "$indent<ul class='children'>\n"; 
     251                return $output; 
     252        } 
     253 
     254        function end_lvl($output, $depth, $args) { 
     255                $indent = str_repeat("\t", $depth); 
     256                $output .= "$indent</ul>\n"; 
     257                return $output; 
     258        } 
     259 
     260        function start_el($output, $category, $depth, $args) { 
     261                extract($args); 
     262 
     263                $class = in_array( $category->term_id, $popular_cats ) ? ' class="popular-category"' : ''; 
     264                $output .= "\n<li id='category-$category->term_id'$class>" . '<label for="in-category-' . $category->term_id . '" class="selectit"><input value="' . $category->term_id . '" type="checkbox" name="post_category[]" id="in-category-' . $category->term_id . '"' . (in_array( $category->term_id, $selected_cats ) ? ' checked="checked"' : "" ) . '/> ' . wp_specialchars( apply_filters('the_category', $category->name )) . '</label>'; 
     265 
     266                return $output; 
     267        } 
     268 
     269        function end_el($output, $category, $depth, $args) { 
     270                if ( 'list' != $args['style'] ) 
     271                        return $output; 
     272 
     273                $output .= "</li>\n"; 
     274                return $output; 
     275        } 
     276} 
     277 
     278function wp_category_checklist( $post_id ) { 
     279        $walker = new Walker_Category_Checklist; 
     280 
     281        $args = array(); 
     282        $args['selected_cats'] = wp_get_post_categories($post_id); 
     283        $args['popular_cats'] = get_terms( 'category', array( 'fields' => 'ids', 'orderby' => 'count', 'order' => 'DESC', 'number' => $number ) ); 
     284        $categories = get_categories('get=all'); 
     285        $args = array($categories, 0, $args); 
     286        $output = call_user_func_array(array(&$walker, 'walk'), $args); 
     287 
     288        echo $output; 
     289} 
    244290// Tag stuff 
    245291 
    246292// Returns a single tag row (see tag_rows below) 
  • wp-admin/edit-form-advanced.php

     
    241241 
    242242<div id="categories-all" class="ui-tabs-panel"> 
    243243        <ul id="categorychecklist" class="list:category categorychecklist form-no-clear"> 
    244                 <?php dropdown_categories( 0, 0, $popular_ids ); ?> 
     244                <?php wp_category_checklist($post->ID) ?> 
    245245        </ul> 
    246246</div> 
    247247