1. 首页
  2. WordPress 函数手册

get_term()

get_term( int|WP_Term|object $term, string $taxonomy = , string $output = OBJECT, string $filter = ‘raw’ )

按术语ID从数据库中获取所有术语数据。
Get all Term data from database by Term ID.

目录锚点:#说明#参数#返回#源码#笔记


说明(Description)

另见函数 sanitize_term_field()


参数(Parameters)

参数 类型 必填 说明
$term (int | WP_Term | object) 必需 如果是整数,则将从数据库或缓存(如果可用)中获取术语数据。如果stdClass对象(在数据库查询的结果中)将应用筛选器并返回与$Term数据对应的WP_Term对象。如果WP_Term,将返回$Term。
$taxonomy (string) 可选 $term所属的分类名称。
$output (string) 可选 所需的返回类型。数组或数组中的一个,分别对应于WP术语对象、关联数组或数值数组。
$filter (string) 可选 默认为raw或不应用WordPress定义的过滤器。

返回(Return)

(WP|Term|array|WP_Error|null)成功时由$output指定类型的对象。当$output为“OBJECT”时,将返回一个WP_Term实例。如果分类法不存在,则返回WP_错误。对于杂项失败返回null。


源码(Source)

/**
 * Get all Term data from database by Term ID.
 *
 * The usage of the get_term function is to apply filters to a term object. It
 * is possible to get a term object from the database before applying the
 * filters.
 *
 * $term ID must be part of $taxonomy, to get from the database. Failure, might
 * be able to be captured by the hooks. Failure would be the same value as $wpdb
 * returns for the get_row method.
 *
 * There are two hooks, one is specifically for each term, named 'get_term', and
 * the second is for the taxonomy name, 'term_$taxonomy'. Both hooks gets the
 * term object, and the taxonomy name as parameters. Both hooks are expected to
 * return a Term object.
 *
 * {@see 'get_term'} hook - Takes two parameters the term Object and the taxonomy name.
 * Must return term object. Used in get_term() as a catch-all filter for every
 * $term.
 *
 * {@see 'get_$taxonomy'} hook - Takes two parameters the term Object and the taxonomy
 * name. Must return term object. $taxonomy will be the taxonomy name, so for
 * example, if 'category', it would be 'get_category' as the filter name. Useful
 * for custom taxonomies or plugging into default taxonomies.
 *
 * @todo Better formatting for DocBlock
 *
 * @since 2.3.0
 *
 * @global wpdb $wpdb WordPress database abstraction object.
 * @see sanitize_term_field() The $context param lists the available values for get_term_by() $filter param.
 *
 * @param int|object $term     If integer, will get from database. If object will apply filters and return $term.
 * @param string     $taxonomy Taxonomy name that $term is part of.
 * @param string     $output   Constant OBJECT, ARRAY_A, or ARRAY_N
 * @param string     $filter   Optional, default is raw or no WordPress defined filter will applied.
 * @return object|array|null|WP_Error Term Row from database. Will return null if $term is empty. If taxonomy does not
 * exist then WP_Error will be returned.
 */
function get_term($term, $taxonomy, $output = OBJECT, $filter = 'raw') {
	global $wpdb;

	if ( empty( $term ) ) {
		return new WP_Error( 'invalid_term', __( 'Empty Term' ) );
	}

	if ( ! taxonomy_exists( $taxonomy ) ) {
		return new WP_Error( 'invalid_taxonomy', __( 'Invalid taxonomy' ) );
	}

	if ( is_object($term) && empty($term->filter) ) {
		wp_cache_add( $term->term_id, $term, $taxonomy );
		$_term = $term;
	} else {
		if ( is_object($term) )
			$term = $term->term_id;
		if ( !$term = (int) $term )
			return null;
		if ( ! $_term = wp_cache_get( $term, $taxonomy ) ) {
			$_term = $wpdb->get_row( $wpdb->prepare( "SELECT t.*, tt.* FROM $wpdb->terms AS t INNER JOIN $wpdb->term_taxonomy AS tt ON t.term_id = tt.term_id WHERE tt.taxonomy = %s AND t.term_id = %d LIMIT 1", $taxonomy, $term) );
			if ( ! $_term )
				return null;
			wp_cache_add( $term, $_term, $taxonomy );
		}
	}

	/**
	 * Filter a term.
	 *
	 * @since 2.3.0
	 *
	 * @param int|object $_term    Term object or ID.
	 * @param string     $taxonomy The taxonomy slug.
	 */
	$_term = apply_filters( 'get_term', $_term, $taxonomy );

	/**
	 * Filter a taxonomy.
	 *
	 * The dynamic portion of the filter name, `$taxonomy`, refers
	 * to the taxonomy slug.
	 *
	 * @since 2.3.0
	 *
	 * @param int|object $_term    Term object or ID.
	 * @param string     $taxonomy The taxonomy slug.
	 */
	$_term = apply_filters( "get_$taxonomy", $_term, $taxonomy );
	$_term = sanitize_term($_term, $taxonomy, $filter);

	if ( $output == OBJECT ) {
		return $_term;
	} elseif ( $output == ARRAY_A ) {
		$__term = get_object_vars($_term);
		return $__term;
	} elseif ( $output == ARRAY_N ) {
		$__term = array_values(get_object_vars($_term));
		return $__term;
	} else {
		return $_term;
	}
}
更新版本 源码位置 使用 被使用
4.4.0 wp-includes/taxonomy.php:819 53 10

笔记(Notes)

实例
get_term()使用WP对象缓存来存储以前获取的术语数据。这有助于避免从数据库中读取术语数据的后续数据I/O调用。例如:

get_term() 为WP2原创文章,链接:https://www.wp2.cn/functions/get_term/

发表评论

您的电子邮箱地址不会被公开。