[wp-trac] [WordPress Trac] #9089: categories not appearing in admin - 'prune working set' the culprit ?

WordPress Trac wp-trac at lists.automattic.com
Wed Feb 11 12:24:58 GMT 2009


#9089: categories not appearing in admin - 'prune working set' the culprit ?
----------------------------+-----------------------------------------------
 Reporter:  yogomozilla     |       Owner:  anonymous                       
     Type:  defect (bug)    |      Status:  new                             
 Priority:  normal          |   Milestone:                                  
Component:  Administration  |     Version:  2.7                             
 Severity:  normal          |    Keywords:  category,admin,missing,hierarchy
----------------------------+-----------------------------------------------
 Hi

 I have some categories that when added do not appear in the "categories"
 admin after being added, although they do appear in the "Category Parent"
 select box in "Add Category".

 I backtracked through the code and found function _cat_rows in wp-
 admin/includes/template.php that appears to display the category hierarchy
 in the admin.
 After hacking the code I noticed that the categories missing from the
 hierarchy were being unset on line 87:

 {{{
 unset($categories[$i]); // Prune the working set
 }}}

 I'm not a WP hacker, so I'm not sure why these is being unset. In any
 case, I moved the unset as in this diff:

 {{{
 $ diff -U 10 template.php template.php.dev
 --- template.php        2009-02-11 22:50:47.000000000 +1100
 +++ template.php.dev    2009-02-11 22:53:56.000000000 +1100
 @@ -77,26 +77,26 @@
                         $num_parents = count($my_parents);
                         while( $my_parent = array_pop($my_parents) ) {
                                 echo "\t" . _cat_row( $my_parent, $level -
 $num_parents );
                                 $num_parents--;
                         }
                 }

                 if ( $count >= $start )
                         echo "\t" . _cat_row( $category, $level );

 -               unset($categories[$i]); // Prune the working set
                 $count++;

                 if ( isset($children[$category->term_id]) )
                         _cat_rows( $categories, $count,
 $category->term_id, $level + 1, $page, $per_page );
 -
 +
 +               unset($categories[$i]); // Prune the working set
         }

         $output = ob_get_contents();
         ob_end_clean();

         echo $output;
  }

  /**
   * {@internal Missing Short Description}}
 }}}

 After moving this line, the categories were shown in the hierarchy.

 Here's a listing of the categories in question:

 {{{
 mysql> SELECT t.slug, tx.term_taxonomy_id, tx.term_id, tx.taxonomy,
 tx.parent, tx.count
 FROM cs_wp_term_taxonomy tx
 JOIN cs_wp_terms t ON t.term_id = tx.term_id
 WHERE (tx.parent = 7 OR t.term_id = 7)
 AND tx.taxonomy = 'category' ORDER BY t.term_id;
 +-------------------+------------------+---------+----------+--------+-------+
 | slug              | term_taxonomy_id | term_id | taxonomy | parent |
 count |
 +-------------------+------------------+---------+----------+--------+-------+
 | news              |                6 |       6 | category |      7 |
 2 |
 | navigation        |                7 |       7 | category |      3 |
 0 |
 | contact           |               14 |      14 | category |      7 |
 0 |
 | learn             |               32 |      29 | category |      7 |
 2 |
 | people            |               40 |      37 | category |      7 |
 1 |
 | development-notes |               55 |      52 | category |      7 |
 0 |
 | testing-123       |               56 |      53 | category |      7 |
 0 |
 +-------------------+------------------+---------+----------+--------+-------+
 7 rows in set (0.00 sec)
 }}}

 The slugs 'news', 'contact' and 'people' appear in the hierarchy as
 children of 'navigation', the other 3 that have a parent of 'navigation'
 do not.

 Hopefully that's enough to go on!

 I'm using WP 2.7.1

-- 
Ticket URL: <https://core.trac.wordpress.org/ticket/9089>
WordPress Trac <http://trac.wordpress.org/>
WordPress blogging software


More information about the wp-trac mailing list