Add get_tags(). See #3723

git-svn-id: http://svn.automattic.com/wordpress/trunk@5232 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
ryan 2007-04-10 18:55:51 +00:00
parent 246db4315f
commit de91343f51
1 changed files with 87 additions and 0 deletions

View File

@ -344,4 +344,91 @@ function _get_category_hierarchy() {
return $children;
}
// Tags
function &get_tags($args = '') {
global $wpdb, $category_links;
if ( is_array($args) )
$r = &$args;
else
parse_str($args, $r);
$defaults = array('orderby' => 'name', 'order' => 'ASC',
'hide_empty' => true, 'exclude' => '', 'include' => '',
'number' => '');
$r = array_merge($defaults, $r);
if ( 'count' == $r['orderby'] )
$r['orderby'] = 'category_count';
else
$r['orderby'] = "cat_" . $r['orderby']; // restricts order by to cat_ID and cat_name fields
$r['number'] = (int) $r['number'];
extract($r);
$key = md5( serialize( $r ) );
if ( $cache = wp_cache_get( 'get_tags', 'category' ) )
if ( isset( $cache[ $key ] ) )
return apply_filters('get_tags', $cache[$key], $r);
$where = 'cat_ID > 0';
$inclusions = '';
if ( !empty($include) ) {
$child_of = 0; //ignore child_of and exclude params if using include
$exclude = '';
$incategories = preg_split('/[\s,]+/',$include);
if ( count($incategories) ) {
foreach ( $incategories as $incat ) {
if (empty($inclusions))
$inclusions = ' AND ( cat_ID = ' . intval($incat) . ' ';
else
$inclusions .= ' OR cat_ID = ' . intval($incat) . ' ';
}
}
}
if (!empty($inclusions))
$inclusions .= ')';
$where .= $inclusions;
$exclusions = '';
if ( !empty($exclude) ) {
$excategories = preg_split('/[\s,]+/',$exclude);
if ( count($excategories) ) {
foreach ( $excategories as $excat ) {
if (empty($exclusions))
$exclusions = ' AND ( cat_ID <> ' . intval($excat) . ' ';
else
$exclusions .= ' AND cat_ID <> ' . intval($excat) . ' ';
}
}
}
if (!empty($exclusions))
$exclusions .= ')';
$exclusions = apply_filters('list_tags_exclusions', $exclusions, $r );
$where .= $exclusions;
if ( $hide_empty )
$where .= ' AND tag_count > 0';
$where .= ' AND ( type & ' . TAXONOMY_TAG . ' != 0 ) ';
if ( !empty($number) )
$number = 'LIMIT ' . $number;
else
$number = '';
$tags = $wpdb->get_results("SELECT * FROM $wpdb->categories WHERE $where ORDER BY $orderby $order $number");
if ( empty($tags) )
return array();
$cache[ $key ] = $tags;
wp_cache_set( 'get_tags', $cache, 'category' );
$tags = apply_filters('get_tags', $tags, $r);
return $tags;
}
?>