按术语字段和数据从数据库中获取所有术语数据。

原型

get_term_by( string $field, string|int $value, string $taxonomy = '', string $output = OBJECT, string $filter = 'raw' )

描述

警告:‘name’$字段不会转义$ value。如果需要,你必须自己完成。

参考:

  • sanitize_term_field()
  • get_term_by()

参数

$field (string) (Required) ‘slug’,‘name’,‘id’(term_id)或’term_taxonomy_id’

$value (string|int) (Required) 搜索此术语值

$taxonomy (string) (Optional) 分类名称。可选,如果$ field是’term_taxonomy_id’。

$output (string) (Optional)  所需的返回类型。 OBJECT,ARRAY_A或ARRAY_N之一,分别对应于WP_Term对象,关联数组或数值数组。

$filter (string) (Optional)  默认为raw或不应用WordPress定义的过滤器。

返回值

(WP_Term|array|false)  

源文件

路径:wp-includes/taxonomy.php

<?php
...
function get_term_by( $field, $value, $taxonomy = '', $output = OBJECT, $filter = 'raw' ) {
	// 'term_taxonomy_id' lookups don't require taxonomy checks.
	if ( 'term_taxonomy_id' !== $field && ! taxonomy_exists( $taxonomy ) ) {
		return false;
	}
	// No need to perform a query for empty 'slug' or 'name'.
	if ( 'slug' === $field || 'name' === $field ) {
		$value = (string) $value;
		if ( 0 === strlen( $value ) ) {
			return false;
		}
	}
	if ( 'id' === $field || 'term_id' === $field ) {
		$term = get_term( (int) $value, $taxonomy, $output, $filter );
		if ( is_wp_error( $term ) || null === $term ) {
			$term = false;
		}
		return $term;
	}
	$args = array(
		'get'                    => 'all',
		'number'                 => 1,
		'taxonomy'               => $taxonomy,
		'update_term_meta_cache' => false,
		'orderby'                => 'none',
		'suppress_filter'        => true,
	);
	switch ( $field ) {
		case 'slug' :
			$args['slug'] = $value;
			break;
		case 'name' :
			$args['name'] = $value;
			break;
		case 'term_taxonomy_id' :
			$args['term_taxonomy_id'] = $value;
			unset( $args[ 'taxonomy' ] );
			break;
		default :
			return false;
	}
	$terms = get_terms( $args );
	if ( is_wp_error( $terms ) || empty( $terms ) ) {
		return false;
	}
	$term = array_shift( $terms );
	// In the case of 'term_taxonomy_id', override the provided `$taxonomy` with whatever we find in the db.
	if ( 'term_taxonomy_id' === $field ) {
		$taxonomy = $term->taxonomy;
	}
	return get_term( $term, $taxonomy, $output, $filter );
}
...
?>

其他

英文文档:https://developer.wordpress.org/reference/functions/get_term_by/