#17356 closed defect (bug) (duplicate)
Bug wp_insert_category not updating options
Reported by: | Archaniel | Owned by: | |
---|---|---|---|
Milestone: | Priority: | normal | |
Severity: | normal | Version: | 3.1.2 |
Component: | Taxonomy | Keywords: | reporter-feedback |
Focuses: | Cc: |
Description
wp_insert_category does not update options table with child information when inserting a child category
Found it out after digging deeply in and doing a diff on database dumps
http://wordpress.org/support/topic/bug-wp_insert_category-get_categories?replies=1
was my first question
Please Fix
Change History (3)
#2
@
14 years ago
- Milestone Awaiting Review deleted
- Resolution set to duplicate
- Status changed from new to closed
This is a known issue: #14485
#3
@
14 years ago
- Version set to 3.1.2
Excerpt from code (which is in a class function):
$dbimport is a class containing two arrays - $categories and $subcategories
$woman_top_categories = array( // top-level categories array('cat_name'=>'Krása a Móda', 'cat_description'=>'', 'category_nicename'=>'krasa_a_moda', 'category_parent'=>0), array('cat_name'=>'Láska a Sex', 'cat_description'=>'', 'category_nicename'=>'laska_a_sex', 'category_parent'=>0), array('cat_name'=>'Deti', 'cat_description'=>'', 'category_nicename'=>'deti', 'category_parent'=>0), array('cat_name'=>'Zdravie', 'cat_description'=>'', 'category_nicename'=>'zdravie', 'category_parent'=>0), array('cat_name'=>'Lifestyle', 'cat_description'=>'', 'category_nicename'=>'lifestyle', 'category_parent'=>0), array('cat_name'=>'Poradňa', 'cat_description'=>'', 'category_nicename'=>'poradna', 'category_parent'=>0), array('cat_name'=>'Rady a nápady', 'cat_description'=>'', 'category_nicename'=>'rady_a_napady', 'category_parent'=>0), array('cat_name'=>'Archív', 'cat_description'=>'', 'category_nicename'=>'archiv', 'category_parent'=>0), ); foreach ($woman_top_categories as $category) { $this->dbimport->categories[$category['category_nicename']] = wp_insert_category( $category, false); } // second level categories $subcategories = array( array('cat_name'=>'Pleť', 'cat_description'=>'', 'category_nicename'=>'plet', 'category_parent'=> $this->dbimport->categories["krasa_a_moda"]), array('cat_name'=>'Telo', 'cat_description'=>'', 'category_nicename'=>'telo', 'category_parent'=> $this->dbimport->categories["krasa_a_moda"]), array('cat_name'=>'Vlasy', 'cat_description'=>'', 'category_nicename'=>'vlasy', 'category_parent'=> $this->dbimport->categories["krasa_a_moda"]), array('cat_name'=>'Vône', 'cat_description'=>'', 'category_nicename'=>'vone', 'category_parent'=> $this->dbimport->categories["krasa_a_moda"]), array('cat_name'=>'Moda a Trendy', 'cat_description'=>'', 'category_nicename'=>'moda_a_trendy', 'category_parent'=> $this->dbimport->categories["krasa_a_moda"]), ); foreach ($subcategories as $category) { $this->dbimport->subcategories[$this->dbimport->categories["krasa_a_moda"]][$category['category_nicename']] = wp_insert_category( $category, false); }
My current working workaround solution is :
function updatechildopt(){ $to_serialize = array(); foreach ($this->dbimport->categories as $key=>$id) { if (is_array($this->dbimport->subcategories[$id])) foreach ($this->dbimport->subcategories[$id] as $subcatid) { $to_serialize[$id][] = $subcatid; } } global $wpdb; $wpdb->query("UPDATE $wpdb->options SET option_value = '".serialize($to_serialize)."' WHERE option_name='category_children'"); }
my suggestion would be to create a small function within the taxonomy class that would be called from within wp_insert_category function, which would crawl through existing categories and automatically update the option table
I can code it later when I'm done with the project I'm currently working on, but honestly I don't feel myself to contribute to such a gigantic project like wordpress is :(
It sounds like you are calling this from a standalone script.
Please provide an example PHP script which shows the issue you are seeing.