WordPress 使用 WP_Term_Query 代替 get_terms

WordPress 4.6 提供了新的查询分类的方法,比如WP_Query,WP_User_Query以及 WP_Comment_Query
WordPress 程序为你准备好了一切,你可以使用 WordPress 自带的查询分类的方法完成你所需要的东西,你不需要在你的数据库里去写复杂的SQL 查询。

WP_Term_Query

/**
* WP_Term_Query 应用举例
*
* @author 智慧宫
* @link https://lerm.net
*/
$term_query = new WP_Term_Query( $args );
if ( ! empty( $term_query->terms ) ) {
  foreach ( $term_query ->terms as $term ) {
    echo $term->name;
  }
} else {
  echo 'No term found.';
}

参数解释:

上面例子中的 $args 有很多查询分类法参数.

  • taxonomy
    (字符串|数组) 分类法名称或分类发的数组,对结果应加以限制。
  • orderby
    (字符串) 分类项按顺序排列。接受术语字段(‘name’, ‘slug’, ‘term_group’, ‘term_id’, ‘id’, ‘description’)
  • order
    (字符串) 按升序或降序排列分类项,接受 ‘ASC’ (ascending) 或者 ‘DESC’ (descending).默认 ‘ASC’.
  • hide_empty
    (布尔|整型) 是否隐藏没有文章的分类项,接受1|true 或者 0|false, 默认 1|true.
  • include
    (数组|字符串) 用数组或者逗号分隔需要获取的分类项的ID,无默认值
  • exclude
    (数组|字符串) 用数组或者逗号分隔不需要获取的分类项的ID,无默认值,如果include不为空,那就$exclude会被忽略
  • exclude_tree
    (数组|字符串) 用数组或者逗号分隔不需要获取的分类项的ID,排除后代分类项,如果 $include 不为空,$exclude_tree 会被忽略。
  • number
    (整型|字符串) 返回的最大项数 . 接受 |0 (全部) 或者任何正整数. 默认|0 (全部).
  • offset
    (整型) 跳过的文章数量。
  • fields
    (字符串) 查询条件. 接受 ‘all’ (返回全部的分类项的对象的数组), ‘ids’ (返回ids的数组), ‘id=>parent’ (返回ID为键,父级分类项IDs为值的数组), ‘names’ (返回分类项的名称的数组), ‘count’ (返回与分类项匹配的数字), ‘id=>name’ (返回ID为键,分类项名称为值的数组), or ‘id=>slug’ ( 返回ID为键,分类项slug为值的关联数组). 默认为 ‘all’.
  • name
    (字符串|数组) 可选. 返回的分类项的名称或者返回的数组的名称
  • slug
    (字符串|数组) 可选. 任何含有slug的分类项都可以作为该变量的值。默认为空字符串
  • hierarchical
    (布尔) 是否返回层级分类法(即使$HIDEIOLL被设置为真)默认为 true
  • search
    (字符串) 分类项匹配的搜索条件,将使用前后通配符对SQL进行格式化
  • name__like
    (字符串) 检索与 $name__like 相匹配的分类项
  • description__like
    (字符串) 检索描述像 $description__like 的分类项
    Retrieve terms where the description is LIKE .
  • pad_counts
    (布尔) 是否计算包括 $terms 在内的所有子辈,默认为:false
  • get
    (字符串) 是否返回分类项,无论是父级或者分项法否是为空,接受 all或者 empty
  • child_of
    (整型) 获取该分类项的所有后代,如果有多个分类法, $child_of 被忽略.默认为0.
  • parent
    (整型|字符串) 获取该ID的子term 父级分类项的ID检索直系子代分类项
  • childless
    (布尔) 限制没有子代的分类项的结果,在non-hierarchical分类法中不起作用,默认为False
    True to limit results to terms that have no children. This parameter has no effect on non-hierarchical taxonomies. Default false.
  • cache_domain
    (字符串) 当此查询存储在对象缓存中时,将产生唯一的缓存密钥,默认为 core.
  • update_term_meta_cache
    (布尔) 是否匹配分类项的元缓存
    Whether to prime meta caches for matched terms. Default true.
  • meta_query
    (数组)自定义字段参数. 详见 WP_Meta_Query.
  • meta_key
    (字符串) 自定义字段的键. 可以用于 $meta_value
  • meta_value
    (字符串) 自定义字段的值.通常与 $meta_key 一起使用.

Category 中检索分类项

/**
* WP_Term_Query 应用举例
*
* @author 智慧宫
* @link https://lerm.net
*/
$term_query = new WP_Term_Query( array( 'taxonomy' => 'category' ) );
if ( ! empty( $term_query->terms ) ) {
  foreach ( $term_query ->terms as $term ) {
    echo $term->name;
  }
} else {
  echo 'No term found.';
}

发表评论

游客欢迎您123

“WordPress 使用 WP_Term_Query 代替 get_terms” 有 2条评论