diff options
Diffstat (limited to 'wp-admin/includes/taxonomy.php')
| -rw-r--r-- | wp-admin/includes/taxonomy.php | 148 |
1 files changed, 148 insertions, 0 deletions
diff --git a/wp-admin/includes/taxonomy.php b/wp-admin/includes/taxonomy.php new file mode 100644 index 0000000..3f70f45 --- /dev/null +++ b/wp-admin/includes/taxonomy.php @@ -0,0 +1,148 @@ +<?php + +// +// Category +// + +function category_exists($cat_name) { + $id = is_term($cat_name, 'category'); + if ( is_array($id) ) + $id = $id['term_id']; + return $id; +} + +function get_category_to_edit( $id ) { + $category = get_category( $id, OBJECT, 'edit' ); + return $category; +} + +function wp_create_category($cat_name) { + if ( $id = category_exists($cat_name) ) + return $id; + + return wp_insert_category( array('cat_name' => $cat_name) ); +} + +function wp_create_categories($categories, $post_id = '') { + $cat_ids = array (); + foreach ($categories as $category) { + if ($id = category_exists($category)) + $cat_ids[] = $id; + else + if ($id = wp_create_category($category)) + $cat_ids[] = $id; + } + + if ($post_id) + wp_set_post_categories($post_id, $cat_ids); + + return $cat_ids; +} + +function wp_delete_category($cat_ID) { + global $wpdb; + + $cat_ID = (int) $cat_ID; + $default = get_option('default_category'); + + // Don't delete the default cat + if ( $cat_ID == $default ) + return 0; + + return wp_delete_term($cat_ID, 'category', "default=$default"); +} + +function wp_insert_category($catarr) { + global $wpdb; + + extract($catarr, EXTR_SKIP); + + if ( trim( $cat_name ) == '' ) + return 0; + + $cat_ID = (int) $cat_ID; + + // Are we updating or creating? + if ( !empty ($cat_ID) ) + $update = true; + else + $update = false; + + $name = $cat_name; + $description = $category_description; + $slug = $category_nicename; + $parent = $category_parent; + + $parent = (int) $parent; + if ( empty($parent) || !category_exists( $parent ) || ($cat_ID && cat_is_ancestor_of($cat_ID, $parent) ) ) + $parent = 0; + + $args = compact('name', 'slug', 'parent', 'description'); + + if ( $update ) + $cat_ID = wp_update_term($cat_ID, 'category', $args); + else + $cat_ID = wp_insert_term($cat_name, 'category', $args); + + if ( is_wp_error($cat_ID) ) + return 0; + + return $cat_ID['term_id']; +} + +function wp_update_category($catarr) { + global $wpdb; + + $cat_ID = (int) $catarr['cat_ID']; + + if ( $cat_ID == $catarr['category_parent'] ) + return false; + + // First, get all of the original fields + $category = get_category($cat_ID, ARRAY_A); + + // Escape data pulled from DB. + $category = add_magic_quotes($category); + + // Merge old and new fields with new fields overwriting old ones. + $catarr = array_merge($category, $catarr); + + return wp_insert_category($catarr); +} + +// +// Tags +// + +function get_tags_to_edit( $post_id ) { + global $wpdb; + + $post_id = (int) $post_id; + if ( !$post_id ) + return false; + + $tags = wp_get_post_tags($post_id); + + if ( !$tags ) + return false; + + foreach ( $tags as $tag ) + $tag_names[] = $tag->name; + $tags_to_edit = join( ', ', $tag_names ); + $tags_to_edit = attribute_escape( $tags_to_edit ); + $tags_to_edit = apply_filters( 'tags_to_edit', $tags_to_edit ); + return $tags_to_edit; +} + +function tag_exists($tag_name) { + return is_term($tag_name, 'post_tag'); +} + +function wp_create_tag($tag_name) { + if ( $id = tag_exists($tag_name) ) + return $id; + + return wp_insert_term($tag_name, 'post_tag'); +} + +?>
\ No newline at end of file |
