描述
警告:$value未为“name”$field转义。如果需要,你必须自己做。
默认$field为“id”,因此也可以对字段使用null,但不建议这样做。
如果$value不存在,则返回值将为false。如果$taxonomy存在,并且$field和$value组合存在,则将返回该项。
此函数将始终返回与参数中指定的$field–$value–$taxonomy组合匹配的第一个项。如果您的查询可能匹配多个分类项(term)(例如,$field为“name”时可能是这样),请考虑改用get_terms();这样,您将获得所有匹配的分类项,并可以提供自己的逻辑来决定要使用哪个分类项。
另见
- sanitize_term_field():$context参数列出了get_term_by() $filter参数的可用值。
参数
$fieldstring必填-
可以是
'slug','name','term_id'(或'id','ID'), 或'term_taxonomy_id'. $valuestring|int必填-
搜索此分类项(term)值。
$taxonomystring可选-
分类法名称。可选,如果
$field是'term_taxonomy_id'。默认:
'' $outputstring可选-
所需的返回类型。OBJECT、ARRAY_A或ARRAY_N之一,分别对应于WP_Term对象、关联数组或数值数组。
默认:
OBJECT $filterstring可选-
如何清理分类项字段。默认
'raw'。默认:
'raw'
返回
WP_Term|array|false 成功时为WP_Term实例(或数组),取决于$output值。如果$taxonomy不存在或找不到$term,则为false。
源码
更新日志
| 版本 | 描述 |
|---|---|
| 5.5.0 | 为$field参数添加了'ID'作为'id'的别名。 |
| 4.4.0 | 如果$field是'term_taxonomy_id',则$taxonomy是可选的。如果$output是OBJECT,则转换为返回WP_Term对象。 |
| 2.3.0 | 开始引入 |
使用示例
示例
通过名称和分类法类型(taxonomy_name作为类别、post_tag或自定义分类法)获取分类项的示例。// Get term by name ''news'' in Categories taxonomy. $category = get_term_by('name', 'news', 'category') // Get term by name ''news'' in Tags taxonomy. $tag = get_term_by('name', 'news', 'post_tag') // Get term by name ''news'' in Custom taxonomy. $term = get_term_by('name', 'news', 'my_custom_taxonomy') // Get term by name ''Default Menu'' from theme's nav menus. // (Alternative to using wp_get_nav_menu_items) $menu = get_term_by('name', 'Default Menu', 'nav_menu');通过id (term_id,而不是post_id):
// Get term by id (''term_id'') in Categories taxonomy. get_term_by('id', 12, 'category')按类别名称检索类别的示例:
$category = get_term_by('name', 'Term Name', 'category');输出:
(object) array( 'term_id' => 49, 'name' => 'Term Name', 'slug' => 'term-name', 'term_group' => 0, 'term_taxonomy_id' => 49, 'taxonomy' => 'category', 'description' => '', 'parent' => 0, 'count' => 286, 'filter' => 'raw', )
get_term_by()返回单个WP_Term对象。由于内核从v4.1到4.3的变化,现在可以使用多个分类项来匹配提供的名称或slug参数。返回的WP_Term对象将是mySQL找到的第一个匹配项,没有迹象表明可能存在其他匹配项。如果应用程序中存在多个具有相同名称或slug的分类项,则应使用get_terms()而不是get_term_by()。
如果您使用的是自定义分类法,则除非添加第三个参数,即分类法名称,否则这可能不起作用:
我的自定义分类是
wpdocs_playlist。$playlist = get_term_by( 'slug', $playlist_key, 'wpdocs_playlist' );