本文整理汇总了PHP中_pad_term_counts函数的典型用法代码示例。如果您正苦于以下问题:PHP _pad_term_counts函数的具体用法?PHP _pad_term_counts怎么用?PHP _pad_term_counts使用的例子?那么, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了_pad_term_counts函数的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: get_terms
//.........这里部分代码省略.........
$cache = wp_cache_get($cache_key, 'terms');
if (false !== $cache) {
if ('all' === $_fields) {
$cache = array_map('get_term', $cache);
}
/**
* Filter the given taxonomy's terms cache.
*
* @since 2.3.0
*
* @param array $cache Cached array of terms for the given taxonomy.
* @param array $taxonomies An array of taxonomies.
* @param array $args An array of get_terms() arguments.
*/
return apply_filters('get_terms', $cache, $taxonomies, $args);
}
if ('count' == $_fields) {
return $wpdb->get_var($query);
}
$terms = $wpdb->get_results($query);
if ('all' == $_fields) {
update_term_cache($terms);
}
// Prime termmeta cache.
if ($args['update_term_meta_cache']) {
$term_ids = wp_list_pluck($terms, 'term_id');
update_termmeta_cache($term_ids);
}
if (empty($terms)) {
wp_cache_add($cache_key, array(), 'terms', DAY_IN_SECONDS);
/** This filter is documented in wp-includes/taxonomy-functions.php */
return apply_filters('get_terms', array(), $taxonomies, $args);
}
if ($child_of) {
foreach ($taxonomies as $_tax) {
$children = _get_term_hierarchy($_tax);
if (!empty($children)) {
$terms = _get_term_children($child_of, $terms, $_tax);
}
}
}
// Update term counts to include children.
if ($args['pad_counts'] && 'all' == $_fields) {
foreach ($taxonomies as $_tax) {
_pad_term_counts($terms, $_tax);
}
}
// Make sure we show empty categories that have children.
if ($hierarchical && $args['hide_empty'] && is_array($terms)) {
foreach ($terms as $k => $term) {
if (!$term->count) {
$children = get_term_children($term->term_id, $term->taxonomy);
if (is_array($children)) {
foreach ($children as $child_id) {
$child = get_term($child_id, $term->taxonomy);
if ($child->count) {
continue 2;
}
}
}
// It really is empty.
unset($terms[$k]);
}
}
}
$_terms = array();
if ('id=>parent' == $_fields) {
foreach ($terms as $term) {
$_terms[$term->term_id] = $term->parent;
}
} elseif ('ids' == $_fields) {
foreach ($terms as $term) {
$_terms[] = $term->term_id;
}
} elseif ('names' == $_fields) {
foreach ($terms as $term) {
$_terms[] = $term->name;
}
} elseif ('id=>name' == $_fields) {
foreach ($terms as $term) {
$_terms[$term->term_id] = $term->name;
}
} elseif ('id=>slug' == $_fields) {
foreach ($terms as $term) {
$_terms[$term->term_id] = $term->slug;
}
}
if (!empty($_terms)) {
$terms = $_terms;
}
if ($number && is_array($terms) && count($terms) > $number) {
$terms = array_slice($terms, $offset, $number);
}
wp_cache_add($cache_key, $terms, 'terms', DAY_IN_SECONDS);
if ('all' === $_fields) {
$terms = array_map('get_term', $terms);
}
/** This filter is documented in wp-includes/taxonomy */
return apply_filters('get_terms', $terms, $taxonomies, $args);
}
示例2: getTerms
//.........这里部分代码省略.........
if (!empty($number) && !$hierarchical && empty($child_of) && '' === $parent) {
if ($offset) {
$limit = 'LIMIT ' . $offset . ',' . $number;
} else {
$limit = 'LIMIT ' . $number;
}
} else {
$limit = '';
}
if (!empty($search)) {
$search = like_escape($search);
$where .= " AND (t.name LIKE '%{$search}%')";
}
$selects = array();
switch ($fields) {
case 'all':
$selects = array('t.*', 'tt.*');
break;
case 'ids':
case 'id=>parent':
$selects = array('t.term_id', 'tt.parent', 'tt.count');
break;
case 'names':
$selects = array('t.term_id', 'tt.parent', 'tt.count', 't.name');
break;
case 'count':
$orderby = '';
$order = '';
$selects = array('COUNT(*)');
}
$select_this = implode(', ', apply_filters('get_terms_fields', $selects, $args));
// Add inner to relation table ?
$join_relation = $join_relation == false ? '' : "INNER JOIN {$wpdb->term_relationships} AS tr ON tt.term_taxonomy_id = tr.term_taxonomy_id";
$query = "SELECT {$select_this}\r\n\t\t\tFROM {$wpdb->terms} AS t\r\n\t\t\tINNER JOIN {$wpdb->term_taxonomy} AS tt ON t.term_id = tt.term_id\r\n\t\t\t{$join_relation}\r\n\t\t\tWHERE tt.taxonomy IN ({$in_taxonomies})\r\n\t\t\t{$where}\r\n\t\t\t{$orderby} {$order}\r\n\t\t\t{$limit}";
// GROUP BY t.term_id
if ('count' == $fields) {
$term_count = $wpdb->get_var($query);
return $term_count;
}
$terms = $wpdb->get_results($query);
if ('all' == $fields) {
update_term_cache($terms);
}
if (empty($terms)) {
wp_cache_add($cache_key, array(), 's-terms');
$terms = apply_filters('get_terms', array(), $taxonomies, $args);
return $terms;
}
if ($child_of) {
$children = _get_term_hierarchy($taxonomies[0]);
if (!empty($children)) {
$terms =& _get_term_children($child_of, $terms, $taxonomies[0]);
}
}
// Update term counts to include children.
if ($pad_counts && 'all' == $fields) {
_pad_term_counts($terms, $taxonomies[0]);
}
// Make sure we show empty categories that have children.
if ($hierarchical && $hide_empty && is_array($terms)) {
foreach ($terms as $k => $term) {
if (!$term->count) {
$children = _get_term_children($term->term_id, $terms, $taxonomies[0]);
if (is_array($children)) {
foreach ($children as $child) {
if ($child->count) {
continue 2;
}
}
}
// It really is empty
unset($terms[$k]);
}
}
}
reset($terms);
$_terms = array();
if ('id=>parent' == $fields) {
while ($term = array_shift($terms)) {
$_terms[$term->term_id] = $term->parent;
}
$terms = $_terms;
} elseif ('ids' == $fields) {
while ($term = array_shift($terms)) {
$_terms[] = $term->term_id;
}
$terms = $_terms;
} elseif ('names' == $fields) {
while ($term = array_shift($terms)) {
$_terms[] = $term->name;
}
$terms = $_terms;
}
if (0 < $number && intval(@count($terms)) > $number) {
$terms = array_slice($terms, $offset, $number);
}
wp_cache_add($cache_key, $terms, 's-terms');
$terms = apply_filters('get_terms', $terms, $taxonomies, $args);
return $terms;
}
示例3: array
//.........这里部分代码省略.........
if ( count($exterms) ) {
foreach ( $exterms as $exterm ) {
if (empty($exclusions))
$exclusions = ' AND ( t.term_id <> ' . intval($exterm) . ' ';
else
$exclusions .= ' AND t.term_id <> ' . intval($exterm) . ' ';
}
}
}
if ( !empty($exclusions) )
$exclusions .= ')';
$exclusions = apply_filters('list_terms_exclusions', $exclusions, $args );
$where .= $exclusions;
if ( !empty($slug) ) {
$slug = sanitize_title($slug);
$where .= " AND t.slug = '$slug'";
}
if ( !empty($name__like) )
$where .= " AND t.name LIKE '{$name__like}%'";
if ( '' != $parent ) {
$parent = (int) $parent;
$where .= " AND tt.parent = '$parent'";
}
if ( $hide_empty && !$hierarchical )
$where .= ' AND tt.count > 0';
if ( !empty($number) ) {
if( $offset )
$number = 'LIMIT ' . $offset . ',' . $number;
else
$number = 'LIMIT ' . $number;
} else
$number = '';
if ( !empty($search) ) {
$search = like_escape($search);
$where .= " AND (t.name LIKE '%$search%')";
}
$select_this = '';
if ( 'all' == $fields )
$select_this = 't.*, tt.*';
else if ( 'ids' == $fields )
$select_this = 't.term_id';
else if ( 'names' == $fields )
$select_this = 't.name';
$query = "SELECT $select_this FROM $wpdb->terms AS t INNER JOIN $wpdb->term_taxonomy AS tt ON t.term_id = tt.term_id WHERE tt.taxonomy IN ($in_taxonomies) $where ORDER BY $orderby $order $number";
if ( 'all' == $fields ) {
$terms = $wpdb->get_results($query);
update_term_cache($terms);
} else if ( ('ids' == $fields) || ('names' == $fields) ) {
$terms = $wpdb->get_col($query);
}
if ( empty($terms) ) {
$cache[ $key ] = array();
wp_cache_set( 'get_terms', $cache, 'terms' );
return apply_filters('get_terms', array(), $taxonomies, $args);
}
if ( $child_of || $hierarchical ) {
$children = _get_term_hierarchy($taxonomies[0]);
if ( ! empty($children) )
$terms = & _get_term_children($child_of, $terms, $taxonomies[0]);
}
// Update term counts to include children.
if ( $pad_counts )
_pad_term_counts($terms, $taxonomies[0]);
// Make sure we show empty categories that have children.
if ( $hierarchical && $hide_empty ) {
foreach ( $terms as $k => $term ) {
if ( ! $term->count ) {
$children = _get_term_children($term->term_id, $terms, $taxonomies[0]);
foreach ( $children as $child )
if ( $child->count )
continue 2;
// It really is empty
unset($terms[$k]);
}
}
}
reset ( $terms );
$cache[ $key ] = $terms;
wp_cache_set( 'get_terms', $cache, 'terms' );
$terms = apply_filters('get_terms', $terms, $taxonomies, $args);
return $terms;
}
示例4: array
//.........这里部分代码省略.........
$exclusions = apply_filters('list_terms_exclusions', $exclusions, $args);
$where .= $exclusions;
if (!empty($slug)) {
$slug = sanitize_title($slug);
$where .= " AND t.slug = '{$slug}'";
}
if (!empty($name__like)) {
$where .= " AND t.name LIKE '{$name__like}%'";
}
if ('' !== $parent) {
$parent = (int) $parent;
$where .= " AND tt.parent = '{$parent}'";
}
if ($hide_empty && !$hierarchical) {
$where .= ' AND tt.count > 0';
}
// don't limit the query results when we have to descend the family tree
if (!empty($number) && !$hierarchical && empty($child_of) && '' === $parent) {
if ($offset) {
$limit = 'LIMIT ' . $offset . ',' . $number;
} else {
$limit = 'LIMIT ' . $number;
}
} else {
$limit = '';
}
if (!empty($search)) {
$search = like_escape($search);
$where .= " AND (t.name LIKE '%{$search}%')";
}
$selects = array();
if ('all' == $fields) {
$selects = array('t.*', 'tt.*');
} else {
if ('ids' == $fields) {
$selects = array('t.term_id', 'tt.parent', 'tt.count');
} else {
if ('names' == $fields) {
$selects = array('t.term_id', 'tt.parent', 'tt.count', 't.name');
}
}
}
$select_this = implode(', ', apply_filters('get_terms_fields', $selects, $args));
$query = "SELECT {$select_this} FROM {$wpdb->terms} AS t INNER JOIN {$wpdb->term_taxonomy} AS tt ON t.term_id = tt.term_id WHERE tt.taxonomy IN ({$in_taxonomies}) {$where} ORDER BY {$orderby} {$order} {$limit}";
$terms = $wpdb->get_results($query);
if ('all' == $fields) {
update_term_cache($terms);
}
if (empty($terms)) {
wp_cache_add($cache_key, array(), 'terms');
$terms = apply_filters('get_terms', array(), $taxonomies, $args);
return $terms;
}
if ($child_of) {
$children = _get_term_hierarchy($taxonomies[0]);
if (!empty($children)) {
$terms =& _get_term_children($child_of, $terms, $taxonomies[0]);
}
}
// Update term counts to include children.
if ($pad_counts && 'all' == $fields) {
_pad_term_counts($terms, $taxonomies[0]);
}
// Make sure we show empty categories that have children.
if ($hierarchical && $hide_empty && is_array($terms)) {
foreach ($terms as $k => $term) {
if (!$term->count) {
$children = _get_term_children($term->term_id, $terms, $taxonomies[0]);
if (is_array($children)) {
foreach ($children as $child) {
if ($child->count) {
continue 2;
}
}
}
// It really is empty
unset($terms[$k]);
}
}
}
reset($terms);
$_terms = array();
if ('ids' == $fields) {
while ($term = array_shift($terms)) {
$_terms[] = $term->term_id;
}
$terms = $_terms;
} elseif ('names' == $fields) {
while ($term = array_shift($terms)) {
$_terms[] = $term->name;
}
$terms = $_terms;
}
if (0 < $number && intval(@count($terms)) > $number) {
$terms = array_slice($terms, $offset, $number);
}
wp_cache_add($cache_key, $terms, 'terms');
$terms = apply_filters('get_terms', $terms, $taxonomies, $args);
return $terms;
}
示例5: getTerms
//.........这里部分代码省略.........
}
if ( !empty($search) ) {
$search = like_escape($search);
$where .= " AND (t.name LIKE '%$search%')";
}
$select_this = '';
if ( 'all' == $fields ) {
$select_this = 't.*, tt.*';
} else if ( 'ids' == $fields ) {
$select_this = 't.term_id, tt.parent, tt.count';
} else if ( 'names' == $fields ) {
$select_this = 't.term_id, tt.parent, tt.count, t.name';
}
// Limit posts date
$limitdays_sql = '';
$limit_days = (int) $limit_days;
if ( $limit_days != 0 ) {
$limitdays_sql = 'AND p.post_date_gmt > "' .date( 'Y-m-d H:i:s', time() - $limit_days * 86400 ). '"';
}
$query = "SELECT {$select_this}
FROM {$wpdb->terms} AS t
INNER JOIN {$wpdb->term_taxonomy} AS tt ON t.term_id = tt.term_id
INNER JOIN {$wpdb->term_relationships} AS tr ON tt.term_taxonomy_id = tr.term_taxonomy_id
INNER JOIN {$wpdb->posts} AS p ON tr.object_id = p.ID
WHERE tt.taxonomy IN ( {$in_taxonomies} )
AND p.post_date_gmt < '".current_time('mysql')."'
{$limitdays_sql}
{$category_sql}
{$where}
{$restict_usage}
GROUP BY t.term_id
ORDER BY {$order_by}
{$number_sql}";
if ( 'all' == $fields ) {
$terms = $wpdb->get_results($query);
if ( $skip_cache != true ) {
update_term_cache($terms);
}
} else if ( ('ids' == $fields) || ('names' == $fields) ) {
$terms = $wpdb->get_results($query);
}
if ( empty($terms) ) {
$cache[ $key ] = array();
wp_cache_set( 'get_terms', $cache, 'terms' );
$terms = apply_filters('get_terms', array(), $taxonomies, $args);
return $terms;
}
if ( $child_of ) {
$children = _get_term_hierarchy($taxonomies[0]);
if ( ! empty($children) )
$terms = & _get_term_children($child_of, $terms, $taxonomies[0]);
}
// Update term counts to include children.
if ( $pad_counts && 'all' == $fields )
_pad_term_counts($terms, $taxonomies[0]);
// Make sure we show empty categories that have children.
if ( $hierarchical && $hide_empty && is_array($terms) ) {
foreach ( $terms as $k => $term ) {
if ( ! $term->count ) {
$children = _get_term_children($term->term_id, $terms, $taxonomies[0]);
if( is_array($children) )
foreach ( $children as $child )
if ( $child->count )
continue 2;
// It really is empty
unset($terms[$k]);
}
}
}
reset ( $terms );
$_terms = array();
if ( 'ids' == $fields ) {
while ( $term = array_shift($terms) )
$_terms[] = $term->term_id;
$terms = $_terms;
} elseif ( 'names' == $fields ) {
while ( $term = array_shift($terms) )
$_terms[] = $term->name;
$terms = $_terms;
}
if ( $skip_cache != true ) {
wp_cache_add( $cache_key, $terms, 'terms' );
}
$terms = apply_filters('get_terms', $terms, $taxonomies, $args);
return $terms;
}
示例6: get_terms
//.........这里部分代码省略.........
$selects = array();
switch ( $fields ) {
case 'all':
$selects = array('t.*', 'tt.*');
break;
case 'ids':
case 'id=>parent':
$selects = array('t.term_id', 'tt.parent', 'tt.count');
break;
case 'names':
$selects = array('t.term_id', 'tt.parent', 'tt.count', 't.name');
break;
case 'count':
$orderby = '';
$order = '';
$selects = array('COUNT(*)');
}
$_fields = $fields;
$fields = implode(', ', apply_filters( 'get_terms_fields', $selects, $args ));
$join = "INNER JOIN $wpdb->term_taxonomy AS tt ON t.term_id = tt.term_id";
$pieces = array( 'fields', 'join', 'where', 'orderby', 'order', 'limits' );
$clauses = apply_filters( 'terms_clauses', compact( $pieces ), $taxonomies, $args );
foreach ( $pieces as $piece )
$$piece = isset( $clauses[ $piece ] ) ? $clauses[ $piece ] : '';
$query = "SELECT $fields FROM $wpdb->terms AS t $join WHERE $where $orderby $order $limits";
$fields = $_fields;
if ( 'count' == $fields ) {
$term_count = $wpdb->get_var($query);
return $term_count;
}
$terms = $wpdb->get_results($query);
if ( 'all' == $fields ) {
update_term_cache($terms);
}
if ( empty($terms) ) {
wp_cache_add( $cache_key, array(), 'terms', DAY_IN_SECONDS );
$terms = apply_filters('get_terms', array(), $taxonomies, $args);
return $terms;
}
if ( $child_of ) {
$children = _get_term_hierarchy($taxonomies[0]);
if ( ! empty($children) )
$terms = _get_term_children($child_of, $terms, $taxonomies[0]);
}
// Update term counts to include children.
if ( $pad_counts && 'all' == $fields )
_pad_term_counts($terms, $taxonomies[0]);
// Make sure we show empty categories that have children.
if ( $hierarchical && $hide_empty && is_array($terms) ) {
foreach ( $terms as $k => $term ) {
if ( ! $term->count ) {
$children = _get_term_children($term->term_id, $terms, $taxonomies[0]);
if ( is_array($children) )
foreach ( $children as $child )
if ( $child->count )
continue 2;
// It really is empty
unset($terms[$k]);
}
}
}
reset ( $terms );
$_terms = array();
if ( 'id=>parent' == $fields ) {
while ( $term = array_shift($terms) )
$_terms[$term->term_id] = $term->parent;
$terms = $_terms;
} elseif ( 'ids' == $fields ) {
while ( $term = array_shift($terms) )
$_terms[] = $term->term_id;
$terms = $_terms;
} elseif ( 'names' == $fields ) {
while ( $term = array_shift($terms) )
$_terms[] = $term->name;
$terms = $_terms;
}
if ( 0 < $number && intval(@count($terms)) > $number ) {
$terms = array_slice($terms, $offset, $number);
}
wp_cache_add( $cache_key, $terms, 'terms', DAY_IN_SECONDS );
$terms = apply_filters('get_terms', $terms, $taxonomies, $args);
return $terms;
}
示例7: get_terms
//.........这里部分代码省略.........
if (!$last_changed) {
$last_changed = microtime();
wp_cache_set('last_changed', $last_changed, 'terms');
}
$cache_key = "get_terms:{$key}:{$last_changed}";
$cache = wp_cache_get($cache_key, 'terms');
if (false !== $cache) {
if ('all' === $_fields) {
$cache = array_map('get_term', $cache);
}
return $cache;
}
if ('count' == $_fields) {
return $wpdb->get_var($this->request);
}
$terms = $wpdb->get_results($this->request);
if ('all' == $_fields) {
update_term_cache($terms);
}
// Prime termmeta cache.
if ($args['update_term_meta_cache']) {
$term_ids = wp_list_pluck($terms, 'term_id');
update_termmeta_cache($term_ids);
}
if (empty($terms)) {
wp_cache_add($cache_key, array(), 'terms', DAY_IN_SECONDS);
return array();
}
if ($child_of) {
foreach ($taxonomies as $_tax) {
$children = _get_term_hierarchy($_tax);
if (!empty($children)) {
$terms = _get_term_children($child_of, $terms, $_tax);
}
}
}
// Update term counts to include children.
if ($args['pad_counts'] && 'all' == $_fields) {
foreach ($taxonomies as $_tax) {
_pad_term_counts($terms, $_tax);
}
}
// Make sure we show empty categories that have children.
if ($hierarchical && $args['hide_empty'] && is_array($terms)) {
foreach ($terms as $k => $term) {
if (!$term->count) {
$children = get_term_children($term->term_id, $term->taxonomy);
if (is_array($children)) {
foreach ($children as $child_id) {
$child = get_term($child_id, $term->taxonomy);
if ($child->count) {
continue 2;
}
}
}
// It really is empty.
unset($terms[$k]);
}
}
}
$_terms = array();
if ('id=>parent' == $_fields) {
foreach ($terms as $term) {
$_terms[$term->term_id] = $term->parent;
}
} elseif ('ids' == $_fields) {
foreach ($terms as $term) {
$_terms[] = $term->term_id;
}
} elseif ('names' == $_fields) {
foreach ($terms as $term) {
$_terms[] = $term->name;
}
} elseif ('id=>name' == $_fields) {
foreach ($terms as $term) {
$_terms[$term->term_id] = $term->name;
}
} elseif ('id=>slug' == $_fields) {
foreach ($terms as $term) {
$_terms[$term->term_id] = $term->slug;
}
}
if (!empty($_terms)) {
$terms = $_terms;
}
// Hierarchical queries are not limited, so 'offset' and 'number' must be handled now.
if ($hierarchical && $number && is_array($terms)) {
if ($offset >= count($terms)) {
$terms = array();
} else {
$terms = array_slice($terms, $offset, $number, true);
}
}
wp_cache_add($cache_key, $terms, 'terms', DAY_IN_SECONDS);
if ('all' === $_fields) {
$terms = array_map('get_term', $terms);
}
$this->terms = $terms;
return $this->terms;
}
示例8: get_terms
//.........这里部分代码省略.........
* @param string|array $taxonomies A taxonomy or array of taxonomies.
* @param array $args An array of terms query arguments.
*/
$clauses = apply_filters( 'terms_clauses', compact( $pieces ), $taxonomies, $args );
$fields = isset( $clauses[ 'fields' ] ) ? $clauses[ 'fields' ] : '';
$join = isset( $clauses[ 'join' ] ) ? $clauses[ 'join' ] : '';
$where = isset( $clauses[ 'where' ] ) ? $clauses[ 'where' ] : '';
$orderby = isset( $clauses[ 'orderby' ] ) ? $clauses[ 'orderby' ] : '';
$order = isset( $clauses[ 'order' ] ) ? $clauses[ 'order' ] : '';
$limits = isset( $clauses[ 'limits' ] ) ? $clauses[ 'limits' ] : '';
$query = "SELECT $fields FROM $wpdb->terms AS t $join WHERE $where $orderby $order $limits";
if ( 'count' == $_fields ) {
$term_count = $wpdb->get_var($query);
return $term_count;
}
$terms = $wpdb->get_results($query);
if ( 'all' == $_fields ) {
update_term_cache( $terms );
}
if ( empty($terms) ) {
wp_cache_add( $cache_key, array(), 'terms', DAY_IN_SECONDS );
/** This filter is documented in wp-includes/taxonomy.php */
$terms = apply_filters( 'get_terms', array(), $taxonomies, $args );
return $terms;
}
if ( $child_of ) {
$children = _get_term_hierarchy( reset( $taxonomies ) );
if ( ! empty( $children ) ) {
$terms = _get_term_children( $child_of, $terms, reset( $taxonomies ) );
}
}
// Update term counts to include children.
if ( $args['pad_counts'] && 'all' == $_fields ) {
_pad_term_counts( $terms, reset( $taxonomies ) );
}
// Make sure we show empty categories that have children.
if ( $hierarchical && $args['hide_empty'] && is_array( $terms ) ) {
foreach ( $terms as $k => $term ) {
if ( ! $term->count ) {
$children = get_term_children( $term->term_id, reset( $taxonomies ) );
if ( is_array( $children ) ) {
foreach ( $children as $child_id ) {
$child = get_term( $child_id, reset( $taxonomies ) );
if ( $child->count ) {
continue 2;
}
}
}
// It really is empty
unset($terms[$k]);
}
}
}
reset( $terms );
$_terms = array();
if ( 'id=>parent' == $_fields ) {
while ( $term = array_shift( $terms ) ) {
$_terms[$term->term_id] = $term->parent;
}
} elseif ( 'ids' == $_fields ) {
while ( $term = array_shift( $terms ) ) {
$_terms[] = $term->term_id;
}
} elseif ( 'names' == $_fields ) {
while ( $term = array_shift( $terms ) ) {
$_terms[] = $term->name;
}
} elseif ( 'id=>name' == $_fields ) {
while ( $term = array_shift( $terms ) ) {
$_terms[$term->term_id] = $term->name;
}
} elseif ( 'id=>slug' == $_fields ) {
while ( $term = array_shift( $terms ) ) {
$_terms[$term->term_id] = $term->slug;
}
}
if ( ! empty( $_terms ) ) {
$terms = $_terms;
}
if ( $number && is_array( $terms ) && count( $terms ) > $number ) {
$terms = array_slice( $terms, $offset, $number );
}
wp_cache_add( $cache_key, $terms, 'terms', DAY_IN_SECONDS );
/** This filter is documented in wp-includes/taxonomy */
$terms = apply_filters( 'get_terms', $terms, $taxonomies, $args );
return $terms;
}
示例9: getTerms
//.........这里部分代码省略.........
if ( $hide_empty && !$hierarchical ) {
if ( $min_usage == 0 )
$where .= ' AND tt.count > 0';
else
$where .= $wpdb->prepare( ' AND tt.count >= %d', $min_usage );
}
if ( !empty($search) ) {
$search = like_escape($search);
$where .= " AND (t.name LIKE '%$search%')";
}
// don't limit the query results when we have to descend the family tree
if ( ! empty($number) && ! $hierarchical && empty( $child_of ) && '' === $parent ) {
if( $offset )
$limit = 'LIMIT ' . $offset . ',' . $number;
else
$limit = 'LIMIT ' . $number;
} else
$limit = '';
$selects = array();
if ( 'all' == $fields )
$selects = array('t.*', 'tt.*');
else if ( 'ids' == $fields )
$selects = array('t.term_id', 'tt.parent', 'tt.count');
else if ( 'names' == $fields )
$selects = array('t.term_id', 'tt.parent', 'tt.count', 't.name');
$select_this = implode(', ', apply_filters( 'get_terms_fields', $selects, $args ));
$query = "SELECT $select_this
FROM $wpdb->terms AS t
INNER JOIN $wpdb->term_taxonomy AS tt ON t.term_id = tt.term_id
INNER JOIN $wpdb->term_relationships AS tr ON tt.term_taxonomy_id = tr.term_taxonomy_id
WHERE tt.taxonomy IN ($in_taxonomies)
$where
GROUP BY t.term_id
ORDER BY $orderby $order
$limit";
$terms = $wpdb->get_results($query);
if ( 'all' == $fields ) {
update_term_cache($terms);
}
if ( empty($terms) ) {
wp_cache_add( $cache_key, array(), 'terms' );
$terms = apply_filters('get_terms', array(), $taxonomies, $args);
return $terms;
}
if ( $child_of ) {
$children = _get_term_hierarchy($taxonomies[0]);
if ( ! empty($children) )
$terms = & _get_term_children($child_of, $terms, $taxonomies[0]);
}
// Update term counts to include children.
if ( $pad_counts && 'all' == $fields )
_pad_term_counts($terms, $taxonomies[0]);
// Make sure we show empty categories that have children.
if ( $hierarchical && $hide_empty && is_array($terms) ) {
foreach ( $terms as $k => $term ) {
if ( ! $term->count ) {
$children = _get_term_children($term->term_id, $terms, $taxonomies[0]);
if( is_array($children) )
foreach ( $children as $child )
if ( $child->count )
continue 2;
// It really is empty
unset($terms[$k]);
}
}
}
reset ( $terms );
$_terms = array();
if ( 'ids' == $fields ) {
while ( $term = array_shift($terms) )
$_terms[] = $term->term_id;
$terms = $_terms;
} elseif ( 'names' == $fields ) {
while ( $term = array_shift($terms) )
$_terms[] = $term->name;
$terms = $_terms;
}
if ( 0 < $number && intval(@count($terms)) > $number ) {
$terms = array_slice($terms, $offset, $number);
}
wp_cache_add( $cache_key, $terms, 'terms' );
$terms = apply_filters('get_terms', $terms, $taxonomies, $args);
return $terms;
}
示例10: getTerms
//.........这里部分代码省略.........
if (strpos($st_name_like, ' ') != false || strpos($st_name_like, ' ') != null) {
$tmp = '';
$sts = explode(' ', $st_name_like);
foreach ((array) $sts as $st) {
if (empty($st)) {
continue;
}
$st = addslashes_gpc($st);
$tmp .= " t.name LIKE '%{$st}%' OR ";
}
// Remove latest OR
$tmp = substr($tmp, 0, strlen($tmp) - 4);
$where .= " AND ( {$tmp} ) ";
unset($tmp);
} elseif (!empty($st_name_like)) {
$where .= " AND t.name LIKE '%{$st_name_like}%'";
}
if ('' != $parent) {
$parent = (int) $parent;
$where .= " AND tt.parent = '{$parent}'";
}
if ($hide_empty && !$hierarchical) {
$where .= ' AND tt.count > 0';
}
$number_sql = '';
if (strpos($number, ',') != false || strpos($number, ',') != null) {
$number_sql = $number;
} else {
$number = (int) $number;
if ($number != 0) {
$number_sql = 'LIMIT ' . $number;
}
}
if ('all' == $fields) {
$select_this = 't.*, tt.*';
} else {
if ('ids' == $fields) {
$select_this = 't.term_id';
} else {
if ('names' == $fields) {
$select_this == 't.name';
}
}
}
// Limit posts date
$limitdays_sql = '';
$limit_days = (int) $limit_days;
if ($limit_days != 0) {
$limitdays_sql = 'AND p.post_date > "' . date('Y-m-d H:i:s', time() - $limit_days * 86400) . '"';
}
// Join posts ?
$inner_posts = '';
if (!empty($limitdays_sql) | !empty($category_sql)) {
$inner_posts = "\r\n\t\t\t\tINNER JOIN {$wpdb->term_relationships} AS tr ON tt.term_taxonomy_id = tr.term_taxonomy_id\r\n\t\t\t\tINNER JOIN {$wpdb->posts} AS p ON tr.object_id = p.ID";
}
$query = "SELECT DISTINCT {$select_this}\r\n\t\t\tFROM {$wpdb->terms} AS t\r\n\t\t\tINNER JOIN {$wpdb->term_taxonomy} AS tt ON t.term_id = tt.term_id\r\n\t\t\t{$inner_posts}\r\n\t\t\tWHERE tt.taxonomy IN ( {$in_taxonomies} )\r\n\t\t\t{$limitdays_sql}\r\n\t\t\t{$category_sql}\r\n\t\t\t{$where}\r\n\t\t\t{$restict_usage}\r\n\t\t\tORDER BY {$order_by}\r\n\t\t\t{$number_sql}";
if ('all' == $fields) {
$terms = $wpdb->get_results($query);
if ($skip_cache != true) {
update_term_cache($terms);
}
} elseif ('ids' == $fields) {
$terms = $wpdb->get_col($query);
}
if (empty($terms)) {
return array();
}
if ($child_of || $hierarchical) {
$children = _get_term_hierarchy($taxonomies[0]);
if (!empty($children)) {
$terms =& _get_term_children($child_of, $terms, $taxonomies[0]);
}
}
// Update term counts to include children.
if ($pad_counts) {
_pad_term_counts($terms, $taxonomies[0]);
}
// Make sure we show empty categories that have children.
if ($hierarchical && $hide_empty) {
foreach ((array) $terms as $k => $term) {
if (!$term->count) {
$children = _get_term_children($term->term_id, $terms, $taxonomies[0]);
foreach ((array) $children as $child) {
if ($child->count) {
continue 2;
}
}
// It really is empty
unset($terms[$k]);
}
}
}
reset($terms);
if ($skip_cache != true) {
$cache[$key] = $terms;
wp_cache_set('get_terms', $cache, 'terms');
}
$terms = apply_filters('get_terms', $terms, $taxonomies, $args);
return $terms;
}