当前浏览:首页 / WordPress函数 / get_term_by()

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

按分类项(term)字段和数据从数据库中获取所有分类项数据

by

term 分类项more...


描述

警告:$value未为“name”$field转义。如果需要,你必须自己做。

默认$field为“id”,因此也可以对字段使用null,但不建议这样做。

如果$value不存在,则返回值将为false。如果$taxonomy存在,并且$field和$value组合存在,则将返回该项。

此函数将始终返回与参数中指定的$field$value$taxonomy组合匹配的第一个项。如果您的查询可能匹配多个分类项(term)(例如,$field为“name”时可能是这样),请考虑改用get_terms();这样,您将获得所有匹配的分类项,并可以提供自己的逻辑来决定要使用哪个分类项。

另见


参数

$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是可选的。如果$outputOBJECT,则转换为返回WP_Term对象。
2.3.0开始引入

使用示例

  • 示例1

    示例
    通过名称和分类法类型(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')
  • 示例2

    按类别名称检索类别的示例:

    $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',
    )
  • 示例3

    get_term_by()返回单个WP_Term对象。由于内核从v4.1到4.3的变化,现在可以使用多个分类项来匹配提供的名称或slug参数。返回的WP_Term对象将是mySQL找到的第一个匹配项,没有迹象表明可能存在其他匹配项。如果应用程序中存在多个具有相同名称或slug的分类项,则应使用get_terms()而不是get_term_by()。

  • 示例4

    如果您使用的是自定义分类法,则除非添加第三个参数,即分类法名称,否则这可能不起作用:

    我的自定义分类是wpdocs_playlist

    $playlist = get_term_by( 'slug', $playlist_key, 'wpdocs_playlist' );