描述
警告:$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参数的可用值。
参数
$field
string必填-
可以是
'slug'
,'name'
,'term_id'
(或'id'
,'ID'
), 或'term_taxonomy_id'
. $value
string|int必填-
搜索此分类项(term)值。
$taxonomy
string可选-
分类法名称。可选,如果
$field
是'term_taxonomy_id'
。默认:
''
$output
string可选-
所需的返回类型。OBJECT、ARRAY_A或ARRAY_N之一,分别对应于WP_Term对象、关联数组或数值数组。
默认:
OBJECT
$filter
string可选-
如何清理分类项字段。默认
'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' );