Changeset 5525 for trunk/wp-includes/category.php
- Timestamp:
- 05/23/2007 10:32:33 AM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/wp-includes/category.php
r5521 r5525 8 8 9 9 if ( ! $cat_ids = wp_cache_get('all_category_ids', 'category') ) { 10 $cat_ids = $wpdb->get_col("SELECT cat_ID FROM $wpdb->categories");10 $cat_ids = get_terms('category', 'get=ids&hierarchical=0&hide_empty=0'); 11 11 wp_cache_add('all_category_ids', $cat_ids, 'category'); 12 12 } … … 16 16 17 17 function &get_categories($args = '') { 18 global $wpdb, $category_links; 19 20 $defaults = array( 21 'type' => 'post', 'child_of' => 0, 22 'orderby' => 'name', 'order' => 'ASC', 23 'hide_empty' => true, 'include_last_update_time' => false, 24 'hierarchical' => 1, 'exclude' => '', 25 'include' => '', 'number' => '', 26 'pad_counts' => false 27 ); 28 29 $r = wp_parse_args( $args, $defaults ); 30 31 if ( $r['orderby'] == 'count' ) { 32 $r['orderby'] = 'category_count'; 33 } else { 34 $r['orderby'] = 'cat_' . $r['orderby']; 35 } 36 37 extract( $r ); 38 39 $key = md5( serialize( $r ) ); 40 if ( $cache = wp_cache_get( 'get_categories', 'category' ) ) 41 if ( isset( $cache[ $key ] ) ) 42 return apply_filters('get_categories', $cache[$key], $r); 43 44 $where = 'cat_ID > 0'; 45 $inclusions = ''; 46 if ( !empty($include) ) { 47 $child_of = 0; //ignore child_of and exclude params if using include 48 $exclude = ''; 49 $incategories = preg_split('/[\s,]+/',$include); 50 if ( count($incategories) ) { 51 foreach ( $incategories as $incat ) { 52 if (empty($inclusions)) 53 $inclusions = ' AND ( cat_ID = ' . intval($incat) . ' '; 54 else 55 $inclusions .= ' OR cat_ID = ' . intval($incat) . ' '; 56 } 57 } 58 } 59 if (!empty($inclusions)) 60 $inclusions .= ')'; 61 $where .= $inclusions; 62 63 $exclusions = ''; 64 if ( !empty($exclude) ) { 65 $excategories = preg_split('/[\s,]+/',$exclude); 66 if ( count($excategories) ) { 67 foreach ( $excategories as $excat ) { 68 if (empty($exclusions)) 69 $exclusions = ' AND ( cat_ID <> ' . intval($excat) . ' '; 70 else 71 $exclusions .= ' AND cat_ID <> ' . intval($excat) . ' '; 72 // TODO: Exclude children of excluded cats? Note: children are getting excluded 73 } 74 } 75 } 76 if (!empty($exclusions)) 77 $exclusions .= ')'; 78 $exclusions = apply_filters('list_cats_exclusions', $exclusions, $r ); 79 $where .= $exclusions; 80 81 if ( $hide_empty && !$hierarchical ) { 82 if ( 'link' == $type ) 83 $where .= ' AND link_count > 0'; 84 else 85 $where .= ' AND category_count > 0'; 86 } else { 87 $where .= ' AND ( type & ' . TAXONOMY_CATEGORY . ' != 0 ) '; 88 } 89 90 91 92 if ( !empty($number) ) 93 $number = 'LIMIT ' . $number; 94 else 95 $number = ''; 96 97 $categories = $wpdb->get_results("SELECT * FROM $wpdb->categories WHERE $where ORDER BY $orderby $order $number"); 98 99 if ( empty($categories) ) 100 return array(); 101 102 // TODO: Integrate this into the main query. 103 if ( $include_last_update_time ) { 104 $stamps = $wpdb->get_results("SELECT category_id, UNIX_TIMESTAMP( MAX(post_date) ) AS ts FROM $wpdb->posts, $wpdb->post2cat, $wpdb->categories 105 WHERE post_status = 'publish' AND post_id = ID AND $where GROUP BY category_id"); 106 global $cat_stamps; 107 foreach ($stamps as $stamp) 108 $cat_stamps[$stamp->category_id] = $stamp->ts; 109 function stamp_cat($cat) { 110 global $cat_stamps; 111 $cat->last_update_timestamp = $cat_stamps[$cat->cat_ID]; 112 return $cat; 113 } 114 $categories = array_map('stamp_cat', $categories); 115 unset($cat_stamps); 116 } 117 118 if ( $child_of || $hierarchical ) { 119 $children = _get_category_hierarchy(); 120 if ( ! empty($children) ) 121 $categories = & _get_cat_children($child_of, $categories); 122 } 123 124 // Update category counts to include children. 125 if ( $pad_counts ) 126 _pad_category_counts($type, $categories); 127 128 // Make sure we show empty categories that have children. 129 if ( $hierarchical && $hide_empty ) { 130 foreach ( $categories as $k => $category ) { 131 if ( ! $category->{'link' == $type ? 'link_count' : 'category_count'} ) { 132 $children = _get_cat_children($category->cat_ID, $categories); 133 foreach ( $children as $child ) 134 if ( $child->{'link' == $type ? 'link_count' : 'category_count'} ) 135 continue 2; 136 137 // It really is empty 138 unset($categories[$k]); 139 } 140 } 141 } 142 reset ( $categories ); 143 144 $cache[ $key ] = $categories; 145 wp_cache_add( 'get_categories', $cache, 'category' ); 146 147 $categories = apply_filters('get_categories', $categories, $r); 148 return $categories; 18 // TODO Add back compat fields into each object. 19 return get_terms('category', $args); 149 20 } 150 21 … … 152 23 // Handles category caching. 153 24 function &get_category(&$category, $output = OBJECT) { 154 global $wpdb; 155 156 if ( empty($category) ) 157 return null; 158 159 if ( is_object($category) ) { 160 wp_cache_add($category->cat_ID, $category, 'category'); 161 $_category = $category; 162 } else { 163 $category = (int) $category; 164 if ( ! $_category = wp_cache_get($category, 'category') ) { 165 $_category = $wpdb->get_row("SELECT * FROM $wpdb->categories WHERE cat_ID = '$category' LIMIT 1"); 166 wp_cache_add($category, $_category, 'category'); 167 } 168 } 169 170 $_category = apply_filters('get_category', $_category); 171 172 if ( $output == OBJECT ) { 173 return $_category; 174 } elseif ( $output == ARRAY_A ) { 175 return get_object_vars($_category); 176 } elseif ( $output == ARRAY_N ) { 177 return array_values(get_object_vars($_category)); 178 } else { 179 return $_category; 180 } 25 return get_term($category, 'category', $output); 181 26 } 182 27 … … 193 38 $full_path .= ( $pathdir != '' ? '/' : '' ) . sanitize_title($pathdir); 194 39 195 $categories = $wpdb->get_results("SELECT cat_ID, category_nicename, category_parent FROM $wpdb->categories WHERE category_nicename = '$leaf_path'");40 $categories = get_terms('category', "slug=$leaf_path"); 196 41 197 42 if ( empty($categories) ) … … 201 46 $path = '/' . $leaf_path; 202 47 $curcategory = $category; 203 while ( ($curcategory-> category_parent != 0) && ($curcategory->category_parent != $curcategory->cat_ID) ) {204 $curcategory = $wpdb->get_row("SELECT cat_ID, category_nicename, category_parent FROM $wpdb->categories WHERE cat_ID = '$curcategory->category_parent'");205 $path = '/' . $curcategory-> category_nicename. $path;48 while ( ($curcategory->parent != 0) && ($curcategory->parent != $curcategory->term_id) ) { 49 $curcategory = get_term($curcategory->parent); 50 $path = '/' . $curcategory->slug . $path; 206 51 } 207 52 208 53 if ( $path == $full_path ) 209 return get_category($category-> cat_ID, $output);54 return get_category($category->term_id, $output); 210 55 } 211 56 212 57 // If full matching is not required, return the first cat that matches the leaf. 213 58 if ( ! $full_match ) 214 return get_category($categories[0]-> cat_ID, $output);59 return get_category($categories[0]->term_id, $output); 215 60 216 61 return NULL; … … 218 63 219 64 function get_category_by_slug( $slug ) { 220 global $wpdb; 221 $slug = sanitize_title( $slug ); 222 if ( empty( $slug ) ) 223 return false; 224 $category = $wpdb->get_var( "SELECT * FROM $wpdb->categories WHERE category_nicename = '$slug' " ); 225 return get_category( $category ); 65 return get_term_by('slug', $slug, 'category'); 226 66 } 227 67 … … 230 70 global $wpdb; 231 71 232 $cid = $wpdb->get_var("SELECT cat_ID FROM $wpdb->categories WHERE cat_name='$cat_name'"); 233 234 return $cid?$cid:1; // default to cat 1 72 $cat = get_term_by('name', $cat_name, 'category'); 73 if ($cat) 74 return $cat->term_id; 75 return 0; 235 76 } 236 77 … … 253 94 $cat2 = & get_category($cat2); 254 95 255 if ( !$cat1-> cat_ID || !$cat2->category_parent )96 if ( !$cat1->term_id || !$cat2->parent ) 256 97 return false; 257 98 258 if ( $cat2-> category_parent == $cat1->cat_ID)99 if ( $cat2->parent == $cat1->term_id ) 259 100 return true; 260 101 261 return cat_is_ancestor_of($cat1, get_category($cat2->parent _category));102 return cat_is_ancestor_of($cat1, get_category($cat2->parent)); 262 103 } 263 104
Note: See TracChangeset
for help on using the changeset viewer.