当前位置: 首页>>代码示例>>PHP>>正文


PHP update_term_cache函数代码示例

本文整理汇总了PHP中update_term_cache函数的典型用法代码示例。如果您正苦于以下问题:PHP update_term_cache函数的具体用法?PHP update_term_cache怎么用?PHP update_term_cache使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。


在下文中一共展示了update_term_cache函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: wp_get_object_terms


//.........这里部分代码省略.........
    global $wpdb;
    if (!is_array($taxonomies)) {
        $taxonomies = array($taxonomies);
    }
    foreach ((array) $taxonomies as $taxonomy) {
        if (!is_taxonomy($taxonomy)) {
            return new WP_Error('invalid_taxonomy', __('Invalid Taxonomy'));
        }
    }
    if (!is_array($object_ids)) {
        $object_ids = array($object_ids);
    }
    $object_ids = array_map('intval', $object_ids);
    $defaults = array('orderby' => 'name', 'order' => 'ASC', 'fields' => 'all');
    $args = wp_parse_args($args, $defaults);
    $terms = array();
    if (count($taxonomies) > 1) {
        foreach ($taxonomies as $index => $taxonomy) {
            $t = get_taxonomy($taxonomy);
            if (isset($t->args) && is_array($t->args) && $args != array_merge($args, $t->args)) {
                unset($taxonomies[$index]);
                $terms = array_merge($terms, wp_get_object_terms($object_ids, $taxonomy, array_merge($args, $t->args)));
            }
        }
    } else {
        $t = get_taxonomy($taxonomies[0]);
        if (isset($t->args) && is_array($t->args)) {
            $args = array_merge($args, $t->args);
        }
    }
    extract($args, EXTR_SKIP);
    if ('count' == $orderby) {
        $orderby = 'tt.count';
    } else {
        if ('name' == $orderby) {
            $orderby = 't.name';
        } else {
            if ('slug' == $orderby) {
                $orderby = 't.slug';
            } else {
                if ('term_group' == $orderby) {
                    $orderby = 't.term_group';
                } else {
                    if ('term_order' == $orderby) {
                        $orderby = 'tr.term_order';
                    } else {
                        if ('none' == $orderby) {
                            $orderby = '';
                            $order = '';
                        } else {
                            $orderby = 't.term_id';
                        }
                    }
                }
            }
        }
    }
    // tt_ids queries can only be none or tr.term_taxonomy_id
    if ('tt_ids' == $fields && !empty($orderby)) {
        $orderby = 'tr.term_taxonomy_id';
    }
    if (!empty($orderby)) {
        $orderby = "ORDER BY {$orderby}";
    }
    $taxonomies = "'" . implode("', '", $taxonomies) . "'";
    $object_ids = implode(', ', $object_ids);
    $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';
            } else {
                if ('all_with_object_id' == $fields) {
                    $select_this = 't.*, tt.*, tr.object_id';
                }
            }
        }
    }
    $query = "SELECT {$select_this} FROM {$wpdb->terms} AS t INNER JOIN {$wpdb->term_taxonomy} AS tt ON tt.term_id = t.term_id INNER JOIN {$wpdb->term_relationships} AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ({$taxonomies}) AND tr.object_id IN ({$object_ids}) {$orderby} {$order}";
    if ('all' == $fields || 'all_with_object_id' == $fields) {
        $terms = array_merge($terms, $wpdb->get_results($query));
        update_term_cache($terms);
    } else {
        if ('ids' == $fields || 'names' == $fields) {
            $terms = array_merge($terms, $wpdb->get_col($query));
        } else {
            if ('tt_ids' == $fields) {
                $terms = $wpdb->get_col("SELECT tr.term_taxonomy_id FROM {$wpdb->term_relationships} AS tr INNER JOIN {$wpdb->term_taxonomy} AS tt ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tr.object_id IN ({$object_ids}) AND tt.taxonomy IN ({$taxonomies}) {$orderby} {$order}");
            }
        }
    }
    if (!$terms) {
        $terms = array();
    }
    return apply_filters('wp_get_object_terms', $terms, $object_ids, $taxonomies, $args);
}
开发者ID:klr2003,项目名称:sourceread,代码行数:101,代码来源:taxonomy.php

示例2: taxonomies

 /**
  * Adds tags and categories to the sitemap.
  *
  * @since 1.3
  */
 protected function taxonomies()
 {
     global $wpdb;
     $taxonomy = $this->get_info('content_type');
     if (!($taxonomy == 'category' || $taxonomy == 'post_tag')) {
         return false;
     }
     $tax_not_in = '';
     $limit = $this->getLimit();
     $exclude = $this->get_info('exclude', array());
     if ($exclude && ($ids = wp_parse_id_list($exclude))) {
         $tax_not_in = 't.term_id NOT IN (' . implode(',', $ids) . ') AND';
     }
     // t.slug and tt.taxonomy are necessary to make get_term_link() work properly
     $terms = $wpdb->get_results("SELECT t.term_id, t.slug, tt.taxonomy, MAX(p.post_modified) AS `last_modified`\n\t\t\t FROM {$wpdb->terms} AS t\n\t\t\t INNER JOIN {$wpdb->term_taxonomy} AS tt USING(term_id)\n\t\t\t \tCROSS JOIN {$wpdb->term_relationships} AS tr USING(term_taxonomy_id)\n\t\t\t \tCROSS JOIN {$wpdb->posts} AS p ON p.ID = tr.object_id\n\t\t\t WHERE {$tax_not_in} tt.taxonomy = '{$taxonomy}' AND p.post_type = 'post' AND p.post_status = 'publish'\n\t\t\t GROUP BY t.term_id\n\t\t\t ORDER BY p.post_modified DESC\n\t\t\t LIMIT {$limit}");
     // This hack lets us save a lot of queries that would be performed when we call get_term_link()
     update_term_cache($terms);
     if ($terms) {
         $changefreq = $this->get_info('changefreq', 'none');
         $priority = $this->get_info('priority', 'none');
         foreach ($terms as $term) {
             $this->addUrlItem(get_term_link($term), $term->last_modified, $changefreq, $priority);
         }
     }
 }
开发者ID:MarkSpencerTan,项目名称:webdev,代码行数:30,代码来源:sitetree-xml-factory.class.php

示例3: wp_get_object_terms


//.........这里部分代码省略.........
	$fields = $args['fields'];

	if ( 'count' == $orderby )
		$orderby = 'tt.count';
	else if ( 'name' == $orderby )
		$orderby = 't.name';
	else if ( 'slug' == $orderby )
		$orderby = 't.slug';
	else if ( 'term_group' == $orderby )
		$orderby = 't.term_group';
	else if ( 'term_order' == $orderby )
		$orderby = 'tr.term_order';
	else if ( 'none' == $orderby ) {
		$orderby = '';
		$order = '';
	} else {
		$orderby = 't.term_id';
	}

	// tt_ids queries can only be none or tr.term_taxonomy_id
	if ( ('tt_ids' == $fields) && !empty($orderby) )
		$orderby = 'tr.term_taxonomy_id';

	if ( !empty($orderby) )
		$orderby = "ORDER BY $orderby";

	$order = strtoupper( $order );
	if ( '' !== $order && ! in_array( $order, array( 'ASC', 'DESC' ) ) )
		$order = 'ASC';

	$taxonomies = "'" . implode("', '", array_map( 'esc_sql', $taxonomies ) ) . "'";
	$object_ids = implode(', ', $object_ids);

	$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';
	else if ( 'slugs' == $fields )
		$select_this = 't.slug';
	else if ( 'all_with_object_id' == $fields )
		$select_this = 't.*, tt.*, tr.object_id';

	$query = "SELECT $select_this FROM $wpdb->terms AS t INNER JOIN $wpdb->term_taxonomy AS tt ON tt.term_id = t.term_id INNER JOIN $wpdb->term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ($taxonomies) AND tr.object_id IN ($object_ids) $orderby $order";

	$objects = false;
	if ( 'all' == $fields || 'all_with_object_id' == $fields ) {
		$_terms = $wpdb->get_results( $query );
		foreach ( $_terms as $key => $term ) {
			$_terms[$key] = sanitize_term( $term, $taxonomy, 'raw' );
		}
		$terms = array_merge( $terms, $_terms );
		update_term_cache( $terms );
		$objects = true;
	} else if ( 'ids' == $fields || 'names' == $fields || 'slugs' == $fields ) {
		$_terms = $wpdb->get_col( $query );
		$_field = ( 'ids' == $fields ) ? 'term_id' : 'name';
		foreach ( $_terms as $key => $term ) {
			$_terms[$key] = sanitize_term_field( $_field, $term, $term, $taxonomy, 'raw' );
		}
		$terms = array_merge( $terms, $_terms );
	} else if ( 'tt_ids' == $fields ) {
		$terms = $wpdb->get_col("SELECT tr.term_taxonomy_id FROM $wpdb->term_relationships AS tr INNER JOIN $wpdb->term_taxonomy AS tt ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tr.object_id IN ($object_ids) AND tt.taxonomy IN ($taxonomies) $orderby $order");
		foreach ( $terms as $key => $tt_id ) {
			$terms[$key] = sanitize_term_field( 'term_taxonomy_id', $tt_id, 0, $taxonomy, 'raw' ); // 0 should be the term id, however is not needed when using raw context.
		}
	}

	if ( ! $terms ) {
		$terms = array();
	} elseif ( $objects && 'all_with_object_id' !== $fields ) {
		$_tt_ids = array();
		$_terms = array();
		foreach ( $terms as $term ) {
			if ( in_array( $term->term_taxonomy_id, $_tt_ids ) ) {
				continue;
			}

			$_tt_ids[] = $term->term_taxonomy_id;
			$_terms[] = $term;
		}
		$terms = $_terms;
	} elseif ( ! $objects ) {
		$terms = array_values( array_unique( $terms ) );
	}
	/**
	 * Filter the terms for a given object or objects.
	 *
	 * @since 2.8.0
	 *
	 * @param array        $terms      An array of terms for the given object or objects.
	 * @param array|int    $object_ids Object ID or array of IDs.
	 * @param array|string $taxonomies A taxonomy or array of taxonomies.
	 * @param array        $args       An array of arguments for retrieving terms for
	 *                                 the given object(s).
	 */
	return apply_filters( 'wp_get_object_terms', $terms, $object_ids, $taxonomies, $args );
}
开发者ID:staylor,项目名称:develop.svn.wordpress.org,代码行数:101,代码来源:taxonomy.php

示例4: get_terms


//.........这里部分代码省略.........
     $where = isset($clauses['where']) ? $clauses['where'] : '';
     $distinct = isset($clauses['distinct']) ? $clauses['distinct'] : '';
     $orderby = isset($clauses['orderby']) ? $clauses['orderby'] : '';
     $order = isset($clauses['order']) ? $clauses['order'] : '';
     $limits = isset($clauses['limits']) ? $clauses['limits'] : '';
     if ($where) {
         $where = "WHERE {$where}";
     }
     $this->sql_clauses['select'] = "SELECT {$distinct} {$fields}";
     $this->sql_clauses['from'] = "FROM {$wpdb->terms} AS t {$join}";
     $this->sql_clauses['orderby'] = $orderby ? "ORDER BY {$orderby} {$order}" : '';
     $this->sql_clauses['limits'] = $limits;
     $this->request = "{$this->sql_clauses['select']} {$this->sql_clauses['from']} {$where} {$this->sql_clauses['orderby']} {$this->sql_clauses['limits']}";
     // $args can be anything. Only use the args defined in defaults to compute the key.
     $key = md5(serialize(wp_array_slice_assoc($args, array_keys($this->query_var_defaults))) . serialize($taxonomies) . $this->request);
     $last_changed = wp_cache_get('last_changed', '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);
开发者ID:pjsong,项目名称:WordPress,代码行数:67,代码来源:class-wp-term-query.php

示例5: wp_get_object_terms

/**
 * wp_get_object_terms() - Retrieves the terms associated with the given object(s), in the supplied taxonomies.
 *
 * The following information has to do the $args parameter and for what can be contained in the string
 * or array of that parameter, if it exists.
 *
 * The first argument is called, 'orderby' and has the default value of 'name'. The other value that is
 * supported is 'count'.
 *
 * The second argument is called, 'order' and has the default value of 'ASC'. The only other value that
 * will be acceptable is 'DESC'.
 *
 * The final argument supported is called, 'fields' and has the default value of 'all'. There are
 * multiple other options that can be used instead. Supported values are as follows: 'all', 'ids',
 * 'names', and finally 'all_with_object_id'.
 *
 * The fields argument also decides what will be returned. If 'all' or 'all_with_object_id' is choosen or
 * the default kept intact, then all matching terms objects will be returned. If either 'ids' or 'names'
 * is used, then an array of all matching term ids or term names will be returned respectively.
 *
 * @package WordPress
 * @subpackage Taxonomy
 * @since 2.3
 * @uses $wpdb
 *
 * @param int|array $object_id The id of the object(s) to retrieve.
 * @param string|array $taxonomies The taxonomies to retrieve terms from.
 * @param array|string $args Change what is returned
 * @return array|WP_Error The requested term data or empty array if no terms found. WP_Error if $taxonomy does not exist.
 */
function wp_get_object_terms($object_ids, $taxonomies, $args = array()) {
	global $wpdb;

	if ( !is_array($taxonomies) )
		$taxonomies = array($taxonomies);

	foreach ( $taxonomies as $taxonomy ) {
		if ( ! is_taxonomy($taxonomy) )
			return new WP_Error('invalid_taxonomy', __('Invalid Taxonomy'));
	}

	if ( !is_array($object_ids) )
		$object_ids = array($object_ids);
	$object_ids = array_map('intval', $object_ids);

	$defaults = array('orderby' => 'name', 'order' => 'ASC', 'fields' => 'all');
	$args = wp_parse_args( $args, $defaults );

	$terms = array();
	if ( count($taxonomies) > 1 ) {
		foreach ( $taxonomies as $index => $taxonomy ) {
			$t = get_taxonomy($taxonomy);
			if ( is_array($t->args) && $args != array_merge($args, $t->args) ) {
				unset($taxonomies[$index]);
				$terms = array_merge($terms, wp_get_object_terms($object_ids, $taxonomy, array_merge($args, $t->args)));
			}
		}
	} else {
		$t = get_taxonomy($taxonomies[0]);
		if ( is_array($t->args) )
			$args = array_merge($args, $t->args);
	}

	extract($args, EXTR_SKIP);

	if ( 'count' == $orderby )
		$orderby = 'tt.count';
	else if ( 'name' == $orderby )
		$orderby = 't.name';
	else if ( 'slug' == $orderby )
		$orderby = 't.slug';
	else if ( 'term_group' == $orderby )
		$orderby = 't.term_group';
	else if ( 'term_order' == $orderby )
		$orderby = 'tr.term_order';
	else
		$orderby = 't.term_id';

	$taxonomies = "'" . implode("', '", $taxonomies) . "'";
	$object_ids = implode(', ', $object_ids);

	$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';
	else if ( 'all_with_object_id' == $fields )
		$select_this = 't.*, tt.*, tr.object_id';

	$query = "SELECT $select_this FROM $wpdb->terms AS t INNER JOIN $wpdb->term_taxonomy AS tt ON tt.term_id = t.term_id INNER JOIN $wpdb->term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ($taxonomies) AND tr.object_id IN ($object_ids) ORDER BY $orderby $order";

	if ( 'all' == $fields || 'all_with_object_id' == $fields ) {
		$terms = array_merge($terms, $wpdb->get_results($query));
		update_term_cache($terms);
	} else if ( 'ids' == $fields || 'names' == $fields ) {
		$terms = array_merge($terms, $wpdb->get_col($query));
	} else if ( 'tt_ids' == $fields ) {
		$terms = $wpdb->get_col("SELECT tr.term_taxonomy_id FROM $wpdb->term_relationships AS tr INNER JOIN $wpdb->term_taxonomy AS tt ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tr.object_id IN ($object_ids) AND tt.taxonomy IN ($taxonomies) ORDER BY tr.term_taxonomy_id $order");
//.........这里部分代码省略.........
开发者ID:staylor,项目名称:develop.svn.wordpress.org,代码行数:101,代码来源:taxonomy.php

示例6: 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;
 }
开发者ID:nurpax,项目名称:saastafi,代码行数:101,代码来源:simple-tags.php

示例7: flt_get_terms


//.........这里部分代码省略.........
         case 'id=>parent':
             $selects = array('t.term_id', 'tt.term_taxonomy_id', 'tt.parent', 'tt.count');
             break;
         case 'names':
             $selects = array('t.term_id', 'tt.term_taxonomy_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));
     // === BEGIN Role Scoper MODIFICATION: run the query through scoping filter
     //
     $query_base = "SELECT DISTINCT {$select_this} FROM {$wpdb->terms} AS t INNER JOIN {$wpdb->term_taxonomy} AS tt ON t.term_id = tt.term_id WHERE 1=1 AND tt.taxonomy IN ({$in_taxonomies}) {$where} {$parent_or} {$orderby} {$order} {$limit}";
     // only force application of scoped query filter if we're NOT doing a teaser
     if ('all' == $fields) {
         $do_teaser = $scoper->is_front() && empty($skip_teaser) && scoper_get_otype_option('do_teaser', 'post');
     } else {
         $do_teaser = false;
     }
     $query = apply_filters('terms_request_rs', $query_base, $taxonomies[0], array('skip_teaser' => !$do_teaser, 'is_term_admin' => $is_term_admin, 'required_operation' => $required_operation, 'post_type' => $post_type));
     // if no filering was applied because the teaser is enabled, prevent a redundant query
     if (!empty($exclude_tree) || $query_base != $query || $parent || 'all' != $fields) {
         $terms = scoper_get_results($query);
     } else {
         $terms = $results;
     }
     if ('count' == $fields) {
         $term_count = $wpdb->get_var($query);
         return $term_count;
     }
     if ('all' == $fields && empty($include)) {
         update_term_cache($terms);
     }
     // RS: don't cache an empty array, just in case something went wrong
     if (empty($terms)) {
         return array();
     }
     //
     // === END Role Scoper MODIFICATION ===
     // ====================================
     // === BEGIN Role Scoper ADDITION: Support a disjointed terms tree with some parents hidden
     //
     if ('all' == $fields) {
         $ancestors = ScoperAncestry::get_term_ancestors($taxonomy);
         // array of all ancestor IDs for keyed term_id, with direct parent first
         if ($parent > 0 || !$hierarchical) {
             // in Category Edit form, need to list all editable cats even if parent is not editable
             $remap_parents = false;
             $enforce_actual_depth = true;
             $remap_thru_excluded_parent = false;
         } else {
             // if these settings were passed into this get_terms call, use them
             if (is_admin()) {
                 $remap_parents = true;
             } else {
                 if (-1 === $remap_parents) {
                     $remap_parents = scoper_get_option('remap_term_parents');
                 }
                 if ($remap_parents) {
                     if (-1 === $enforce_actual_depth) {
                         $enforce_actual_depth = scoper_get_option('enforce_actual_term_depth');
                     }
                     if (-1 === $remap_thru_excluded_parent) {
                         $remap_thru_excluded_parent = scoper_get_option('remap_thru_excluded_term_parent');
开发者ID:Netsoro,项目名称:gdnlteamgroup,代码行数:67,代码来源:hardway-taxonomy-legacy_rs.php

示例8: 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;
 }
开发者ID:rongandat,项目名称:best-picture,代码行数:101,代码来源:class.client.tagcloud.php

示例9: getTaxonomyTerms


//.........这里部分代码省略.........
     /**
      * Filter the fields to select in the terms query.
      *
      * @since 8.1
      *
      * @param array        $select     An array of fields to select for the terms query.
      * @param array        $atts       An array of term query arguments.
      * @param string|array $taxonomies A taxonomy or array of taxonomies.
      */
     $fields = implode(', ', apply_filters('cn_get_terms_fields', $select, $atts, $taxonomies));
     $join = 'INNER JOIN ' . CN_TERM_TAXONOMY_TABLE . ' AS tt ON t.term_id = tt.term_id';
     $pieces = array('fields', 'join', 'where', 'orderBy', 'limit');
     /**
      * Filter the terms query SQL clauses.
      *
      * @since 8.1
      *
      * @param array        $pieces     Terms query SQL clauses.
      * @param string|array $taxonomies A taxonomy or array of taxonomies.
      * @param array        $atts       An array of terms query arguments.
      */
     $clauses = apply_filters('cn_terms_clauses', compact($pieces), $taxonomies, $atts);
     foreach ($pieces as $piece) {
         ${$piece} = isset($clauses[$piece]) ? $clauses[$piece] : '';
     }
     $sql = sprintf('SELECT %1$s FROM %2$s AS t %3$s WHERE %4$s %5$s%6$s', $fields, CN_TERMS_TABLE, $join, implode(' ', $where), $orderBy, empty($limit) ? '' : ' ' . $limit);
     if ('count' == $atts['fields']) {
         $term_count = $wpdb->get_var($sql);
         return $term_count;
     }
     $terms = $wpdb->get_results($sql);
     if ('all' == $atts['fields']) {
         foreach ($taxonomies as $taxonomy) {
             update_term_cache($terms, 'cn_' . $taxonomy);
         }
     }
     if (empty($terms)) {
         wp_cache_add($cache_key, array(), 'cn_terms', DAY_IN_SECONDS);
         $terms = apply_filters('cn_terms', array(), $taxonomies, $atts);
         return $terms;
     }
     if ($atts['child_of']) {
         $children = self::childrenIDs(reset($taxonomies));
         if (!empty($children)) {
             $terms = self::descendants($atts['child_of'], $terms, reset($taxonomies));
         }
     }
     /*
      * @todo Add method to adjust counts based on user visibility permissions.
      */
     // Update term counts to include children.
     if ($atts['pad_counts'] && 'all' == $atts['fields']) {
         self::padCounts($terms, reset($taxonomies));
     }
     // Make sure we show empty categories that have children.
     if ($atts['hierarchical'] && $atts['hide_empty'] && is_array($terms)) {
         foreach ($terms as $k => $term) {
             if (!$term->count) {
                 $children = self::children($term->term_id, reset($taxonomies));
                 if (is_array($children)) {
                     foreach ($children as $child_id) {
                         $child = self::filter($child_id, reset($taxonomies));
                         if ($child->count) {
                             continue 2;
                         }
                     }
开发者ID:VacantFuture,项目名称:Connections,代码行数:67,代码来源:class.terms.php

示例10: test_term_objects_should_not_be_modified_by_update_term_cache

 /**
  * @ticket 35462
  */
 public function test_term_objects_should_not_be_modified_by_update_term_cache()
 {
     register_taxonomy('wptests_tax', 'post');
     $t = self::factory()->term->create(array('taxonomy' => 'wptests_tax'));
     $p = self::factory()->post->create();
     wp_set_object_terms($p, $t, 'wptests_tax');
     $terms = wp_get_object_terms($p, 'wptests_tax', array('fields' => 'all_with_object_id'));
     update_term_cache($terms);
     foreach ($terms as $term) {
         $this->assertSame($p, $term->object_id);
     }
 }
开发者ID:aaemnnosttv,项目名称:develop.git.wordpress.org,代码行数:15,代码来源:cache.php

示例11: get_gmedia_terms


//.........这里部分代码省略.........
  *
  * @see  wp_get_object_terms()
  * @uses $wpdb
  *
  * @param int|array    $object_ids The ID(s) of the object(s) to retrieve.
  * @param string|array $taxonomies The taxonomies to retrieve terms from.
  * @param array|string $args       Change what is returned
  *
  * @return array|WP_Error The requested term data or empty array if no terms found. WP_Error if $taxonomy does not exist.
  */
 function get_gmedia_terms($object_ids, $taxonomies, $args = array())
 {
     /** @var $wpdb wpdb */
     global $wpdb;
     $gmOptions = get_option('gmediaOptions');
     if (!is_array($taxonomies)) {
         $taxonomies = array($taxonomies);
     }
     foreach ((array) $taxonomies as $taxonomy) {
         if (!isset($gmOptions['taxonomies'][$taxonomy])) {
             return new WP_Error('gm_invalid_taxonomy', __('Invalid Taxonomy'));
         }
     }
     if (!is_array($object_ids)) {
         $object_ids = array($object_ids);
     }
     $object_ids = array_map('intval', $object_ids);
     $defaults = array('orderby' => 'name', 'order' => 'ASC', 'fields' => 'all', 'unique' => true);
     $args = wp_parse_args($args, $defaults);
     $terms = array();
     /** @var $orderby
      * @var  $order
      * @var  $fields
      * @var  $unique
      */
     extract($args, EXTR_SKIP);
     if ($unique) {
         $groupby = 'GROUP BY t.term_id';
     } else {
         $groupby = '';
     }
     if ('count' == $orderby) {
         $orderby = 't.count';
     } else {
         if ('name' == $orderby) {
             $orderby = 't.name';
         } else {
             if ('global' == $orderby) {
                 $orderby = 't.global';
             } else {
                 if ('term_order' == $orderby) {
                     $orderby = 'tr.term_order';
                 } else {
                     if ('none' == $orderby) {
                         $orderby = '';
                         $order = '';
                     } else {
                         $orderby = 't.term_id';
                     }
                 }
             }
         }
     }
     if (!empty($orderby)) {
         $orderby = "ORDER BY {$orderby}";
     }
     $taxonomies = "'" . implode("', '", $taxonomies) . "'";
     $object_ids = implode(', ', $object_ids);
     $select_this = '';
     if ('all' == $fields) {
         $select_this = 't.*';
     } else {
         if ('ids' == $fields) {
             $select_this = 't.term_id';
         } else {
             if ('names' == $fields) {
                 $select_this = 't.name';
             } else {
                 if ('all_with_object_id' == $fields) {
                     $select_this = 't.*, tr.gmedia_id';
                     $groupby = '';
                 }
             }
         }
     }
     $query = "SELECT {$select_this} FROM {$wpdb->prefix}gmedia_term AS t INNER JOIN {$wpdb->prefix}gmedia_term_relationships AS tr ON tr.gmedia_term_id = t.term_id WHERE t.taxonomy IN ({$taxonomies}) AND tr.gmedia_id IN ({$object_ids}) {$groupby} {$orderby} {$order}";
     if ('all' == $fields || 'all_with_object_id' == $fields) {
         $terms = array_merge($terms, $wpdb->get_results($query));
         // todo ? maybe move function to plugin core
         update_term_cache($terms);
     } else {
         if ('ids' == $fields || 'names' == $fields) {
             $terms = array_merge($terms, $wpdb->get_col($query));
         }
     }
     if (!$terms) {
         $terms = array();
     }
     return apply_filters('get_gmedia_terms', $terms, $object_ids, $taxonomies, $args);
 }
开发者ID:HugoLS,项目名称:Variation,代码行数:101,代码来源:db.connect.php

示例12: wp_get_object_terms


//.........这里部分代码省略.........
                $terms = array_merge($terms, wp_get_object_terms($object_ids, $taxonomy, array_merge($args, $t->args)));
            }
        }
    } else {
        $t = get_taxonomy($taxonomies[0]);
        if (isset($t->args) && is_array($t->args)) {
            $args = array_merge($args, $t->args);
        }
    }
    extract($args, EXTR_SKIP);
    if ('count' == $orderby) {
        $orderby = 'tt.count';
    } else {
        if ('name' == $orderby) {
            $orderby = 't.name';
        } else {
            if ('slug' == $orderby) {
                $orderby = 't.slug';
            } else {
                if ('term_group' == $orderby) {
                    $orderby = 't.term_group';
                } else {
                    if ('term_order' == $orderby) {
                        $orderby = 'tr.term_order';
                    } else {
                        if ('none' == $orderby) {
                            $orderby = '';
                            $order = '';
                        } else {
                            $orderby = 't.term_id';
                        }
                    }
                }
            }
        }
    }
    // tt_ids queries can only be none or tr.term_taxonomy_id
    if ('tt_ids' == $fields && !empty($orderby)) {
        $orderby = 'tr.term_taxonomy_id';
    }
    if (!empty($orderby)) {
        $orderby = "ORDER BY {$orderby}";
    }
    $order = strtoupper($order);
    if ('' !== $order && !in_array($order, array('ASC', 'DESC'))) {
        $order = 'ASC';
    }
    $taxonomies = "'" . implode("', '", $taxonomies) . "'";
    $object_ids = implode(', ', $object_ids);
    $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';
            } else {
                if ('slugs' == $fields) {
                    $select_this = 't.slug';
                } else {
                    if ('all_with_object_id' == $fields) {
                        $select_this = 't.*, tt.*, tr.object_id';
                    }
                }
            }
        }
    }
    $query = "SELECT {$select_this} FROM {$wpdb->terms} AS t INNER JOIN {$wpdb->term_taxonomy} AS tt ON tt.term_id = t.term_id INNER JOIN {$wpdb->term_relationships} AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ({$taxonomies}) AND tr.object_id IN ({$object_ids}) {$orderby} {$order}";
    if ('all' == $fields || 'all_with_object_id' == $fields) {
        $_terms = $wpdb->get_results($query);
        foreach ($_terms as $key => $term) {
            $_terms[$key] = sanitize_term($term, $taxonomy, 'raw');
        }
        $terms = array_merge($terms, $_terms);
        update_term_cache($terms);
    } else {
        if ('ids' == $fields || 'names' == $fields || 'slugs' == $fields) {
            $_terms = $wpdb->get_col($query);
            $_field = 'ids' == $fields ? 'term_id' : 'name';
            foreach ($_terms as $key => $term) {
                $_terms[$key] = sanitize_term_field($_field, $term, $term, $taxonomy, 'raw');
            }
            $terms = array_merge($terms, $_terms);
        } else {
            if ('tt_ids' == $fields) {
                $terms = $wpdb->get_col("SELECT tr.term_taxonomy_id FROM {$wpdb->term_relationships} AS tr INNER JOIN {$wpdb->term_taxonomy} AS tt ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tr.object_id IN ({$object_ids}) AND tt.taxonomy IN ({$taxonomies}) {$orderby} {$order}");
                foreach ($terms as $key => $tt_id) {
                    $terms[$key] = sanitize_term_field('term_taxonomy_id', $tt_id, 0, $taxonomy, 'raw');
                    // 0 should be the term id, however is not needed when using raw context.
                }
            }
        }
    }
    if (!$terms) {
        $terms = array();
    }
    return apply_filters('wp_get_object_terms', $terms, $object_ids, $taxonomies, $args);
}
开发者ID:dev-lav,项目名称:htdocs,代码行数:101,代码来源:taxonomy.php

示例13: wp_get_object_terms

/**
 * Returns the terms associated with the given object(s), in the supplied taxonomies.
 * @param int|array $object_id The id of the object(s)) to retrieve for.
 * @param string|array $taxonomies The taxonomies to retrieve terms from.
 * @return array The requested term data.
 */
function wp_get_object_terms($object_ids, $taxonomies, $args = array())
{
    global $wpdb;
    if (!is_array($taxonomies)) {
        $taxonomies = array($taxonomies);
    }
    foreach ($taxonomies as $taxonomy) {
        if (!is_taxonomy($taxonomy)) {
            return new WP_Error('invalid_taxonomy', __('Invalid Taxonomy'));
        }
    }
    if (!is_array($object_ids)) {
        $object_ids = array($object_ids);
    }
    $object_ids = array_map('intval', $object_ids);
    $defaults = array('orderby' => 'name', 'order' => 'ASC', 'fields' => 'all');
    $args = wp_parse_args($args, $defaults);
    extract($args, EXTR_SKIP);
    if ('count' == $orderby) {
        $orderby = 'tt.count';
    } else {
        if ('name' == $orderby) {
            $orderby = 't.name';
        }
    }
    $taxonomies = "'" . implode("', '", $taxonomies) . "'";
    $object_ids = implode(', ', $object_ids);
    if ('all' == $fields) {
        $select_this = 't.*, tt.*';
    } else {
        if ('ids' == $fields) {
            $select_this = 't.term_id';
        } else {
            if ('names' == $fields) {
                $select_this = 't.name';
            } else {
                if ('all_with_object_id' == $fields) {
                    $select_this = 't.*, tt.*, tr.object_id';
                }
            }
        }
    }
    $query = "SELECT {$select_this} FROM {$wpdb->terms} AS t INNER JOIN {$wpdb->term_taxonomy} AS tt ON tt.term_id = t.term_id INNER JOIN {$wpdb->term_relationships} AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ({$taxonomies}) AND tr.object_id IN ({$object_ids}) ORDER BY {$orderby} {$order}";
    if ('all' == $fields || 'all_with_object_id' == $fields) {
        $terms = $wpdb->get_results($query);
        update_term_cache($terms);
    } else {
        if ('ids' == $fields || 'names' == $fields) {
            $terms = $wpdb->get_col($query);
        } else {
            if ('tt_ids' == $fields) {
                $terms = $wpdb->get_col("SELECT tr.term_taxonomy_id FROM {$wpdb->term_relationships} AS tr INNER JOIN {$wpdb->term_taxonomy} AS tt ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tr.object_id IN ({$object_ids}) AND tt.taxonomy IN ({$taxonomies}) ORDER BY tr.term_taxonomy_id {$order}");
            }
        }
    }
    if (!$terms) {
        return array();
    }
    return $terms;
}
开发者ID:helmonaut,项目名称:owb-mirror,代码行数:66,代码来源:taxonomy.php

示例14: filter_request

 /**
  * Function called when query parameters are processed by Wordpress.
  * 
  * @param $query query parameters
  * @return array() $query processed
  *
  * @since 1.0
  */
 function filter_request($query)
 {
     global $q_config, $wp_query, $wp;
     if (isset($wp->matched_query)) {
         $query = wp_parse_args($wp->matched_query);
     }
     foreach (get_post_types() as $post_type) {
         if (array_key_exists($post_type, $query) && !in_array($post_type, array('post', 'page'))) {
             $query['post_type'] = $post_type;
         }
     }
     $page_foundit = false;
     // -> page
     if (isset($query['pagename']) || isset($query['page_id'])) {
         $page = wp_cache_get('qts_page_request');
         if (!$page) {
             $page = isset($query['page_id']) ? get_page($query['page_id']) : $this->get_page_by_path($query['pagename']);
         }
         if (!$page) {
             return $query;
         }
         $id = $page->ID;
         $cache_array = array($page);
         update_post_caches($cache_array, 'page');
         // caching query :)
         wp_cache_delete('qts_page_request');
         $query['pagename'] = get_page_uri($page);
         $function = 'get_page_link';
         // -> custom post type
     } elseif (isset($query['post_type'])) {
         $page_slug = isset($query['name']) && !empty($query['name']) ? $query['name'] : $query[$query['post_type']];
         $page = $this->get_page_by_path($page_slug, OBJECT, $query['post_type']);
         if (!$page) {
             return $query;
         }
         $id = $page->ID;
         $cache_array = array($page);
         update_post_caches($cache_array, $query['post_type']);
         // caching query :)
         $query['name'] = $query[$query['post_type']] = get_page_uri($page);
         $function = 'get_post_permalink';
         // -> post
     } elseif (isset($query['name']) || isset($query['p'])) {
         $post = isset($query['p']) ? get_post($query['p']) : $this->get_page_by_path($query['name'], OBJECT, 'post');
         if (!$post) {
             return $query;
         }
         $query['name'] = $post->post_name;
         $id = $post->ID;
         $cache_array = array($post);
         update_post_caches($cache_array);
         $function = 'get_permalink';
         // -> category
     } elseif (isset($query['category_name']) || isset($query['cat'])) {
         if (isset($query['category_name'])) {
             $term_slug = $this->get_last_slash($query['category_name']);
         }
         $term = isset($query['cat']) ? get_term($query['cat'], 'category') : $this->get_term_by('slug', $term_slug, 'category');
         if (!$term) {
             return $query;
         }
         $cache_array = array($term);
         update_term_cache($cache_array, 'category');
         // caching query :)
         $id = $term->term_id;
         $query['category_name'] = $term->slug;
         // uri
         $function = 'get_category_link';
         // -> tag
     } elseif (isset($query['tag'])) {
         $term = $this->get_term_by('slug', $query['tag'], 'post_tag');
         if (!$term) {
             return $query;
         }
         $cache_array = array($term);
         update_term_cache($cache_array, 'post_tag');
         // caching query :)
         $id = $term->term_id;
         $query['tag'] = $term->slug;
         $function = 'get_tag_link';
     }
     // -> taxonomy
     $taxonomies = get_taxonomies(array('public' => true, '_builtin' => false));
     foreach ($taxonomies as $term_name) {
         if (isset($query[$term_name])) {
             $term_slug = $this->get_last_slash($query[$term_name]);
             $term = $this->get_term_by('slug', $term_slug, $term_name);
             if (!$term) {
                 return $query;
             }
             $cache_array = array($term);
             update_term_cache($cache_array, $term_name);
//.........这里部分代码省略.........
开发者ID:Savantos,项目名称:cow-theme,代码行数:101,代码来源:qtranslate-slug.php

示例15: get_ordered_object_terms

 /**
  * Retrieves the terms associated with the given object(s), in the
  * supplied taxonomies.
  * 
  * This is a copy of WordPress' wp_get_object_terms function with a bunch
  * of edits to use term_order as a default sorting param.
  * 
  * @since    1.0
  * 
  * @param    array           $terms The post's terms
  * @param    int|array       $object_ids The ID(s) of the object(s) to retrieve.
  * @param    string|array    $taxonomies The taxonomies to retrieve terms from.
  * @param    array|string    $args Change what is returned
  * 
  * @return   array|WP_Error  The requested term data or empty array if no
  *                           terms found. WP_Error if any of the $taxonomies
  *                           don't exist.
  */
 public static function get_ordered_object_terms($terms, $object_ids, $taxonomies, $args)
 {
     $total = count($terms);
     $original_terms = $terms;
     // Term ordering is killing quick/bulk edit, avoid it
     if (is_admin() && (function_exists('get_current_screen') && 'edit-movie' == get_current_screen()->id)) {
         return $terms;
     }
     $taxonomies = explode(', ', str_replace("'", "", $taxonomies));
     if (empty($object_ids) || $taxonomies != "'collection', 'actor', 'genre'" && (!in_array('collection', $taxonomies) && !in_array('actor', $taxonomies) && !in_array('genre', $taxonomies))) {
         return $terms;
     }
     global $wpdb;
     foreach ((array) $taxonomies as $taxonomy) {
         if (!taxonomy_exists($taxonomy)) {
             return new WP_Error('invalid_taxonomy', __('Invalid taxonomy'));
         }
     }
     if (!is_array($object_ids)) {
         $object_ids = array($object_ids);
     }
     $object_ids = array_map('intval', $object_ids);
     $defaults = array('orderby' => 'term_order', 'order' => 'ASC', 'fields' => 'all');
     $args = wp_parse_args($args, $defaults);
     $terms = array();
     if (count($taxonomies) > 1) {
         foreach ($taxonomies as $index => $taxonomy) {
             $t = get_taxonomy($taxonomy);
             if (isset($t->args) && is_array($t->args) && $args != array_merge($args, $t->args)) {
                 unset($taxonomies[$index]);
                 $terms = array_merge($terms, self::get_ordered_object_terms($object_ids, $taxonomy, array_merge($args, $t->args)));
             }
         }
     } else {
         $t = get_taxonomy($taxonomies[0]);
         if (isset($t->args) && is_array($t->args)) {
             $args = array_merge($args, $t->args);
         }
     }
     extract($args, EXTR_SKIP);
     $orderby = "ORDER BY tr.term_order";
     $order = 'ASC';
     $taxonomies = "'" . implode("', '", $taxonomies) . "'";
     $object_ids = implode(', ', $object_ids);
     $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';
             } else {
                 if ('slugs' == $fields) {
                     $select_this = 't.slug';
                 } else {
                     if ('all_with_object_id' == $fields) {
                         $select_this = 't.*, tt.*, tr.object_id';
                     }
                 }
             }
         }
     }
     $query = "SELECT {$select_this} FROM {$wpdb->terms} AS t INNER JOIN {$wpdb->term_taxonomy} AS tt ON tt.term_id = t.term_id INNER JOIN {$wpdb->term_relationships} AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ({$taxonomies}) AND tr.object_id IN ({$object_ids}) {$orderby} {$order}";
     if ('all' == $fields || 'all_with_object_id' == $fields) {
         $_terms = $wpdb->get_results($query);
         foreach ($_terms as $key => $term) {
             $_terms[$key] = sanitize_term($term, $taxonomy, 'raw');
         }
         $terms = array_merge($terms, $_terms);
         update_term_cache($terms);
     } else {
         if ('ids' == $fields || 'names' == $fields || 'slugs' == $fields) {
             $_terms = $wpdb->get_col($query);
             $_field = 'ids' == $fields ? 'term_id' : 'name';
             foreach ($_terms as $key => $term) {
                 $_terms[$key] = sanitize_term_field($_field, $term, $term, $taxonomy, 'raw');
             }
             $terms = array_merge($terms, $_terms);
         } else {
             if ('tt_ids' == $fields) {
//.........这里部分代码省略.........
开发者ID:masterdoed,项目名称:wpmovielibrary,代码行数:101,代码来源:class-wpmoly-utils.php


注:本文中的update_term_cache函数示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。