WordPress获取分类信息函数WP_Term_Query()介绍及使用方法

《获取WordPress指定条件的分类列表函数get_terms()详细介绍和使用方法》文章中,我们介绍了通过get_terms()函数获取指定条件的分类信息,但是文章我们也提到,get_terms()这个函数的查询参数相对来说并不是很多,有时无法完全满足我们的需求,那么这个时候我们就可以使用今天要介绍的这个分类函数WP_Term_Query(),准确的说应该是个类。

函数默认使用方法

$args = array(
	'taxonomy' => array( '自定义分类名称' ),
);
$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.';
}
wp_reset_postdata();

WP_Term_Query所有参数详解

上面例子中的 $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 一起使用.

我们可以看到,使用这个类还查询分类信息的时候我们甚至都可以查询包含指定自定义字段的分类,所以说是非常方便的。

WP_Term_Query使用举例

查询分类法为post_tag,自定义字段为hot,且字段hot的值等于true的分类信息

<?php  
    $args = array( 
        'taxonomy' => array( 'post_tag' ),
        'meta_key' => 'hot',
        'meta_value' => true, 
    ); 
    $term_query = new WP_Term_Query( $args ); 
?>
<ul>
    <?php if(! empty( $term_query->terms )){?>
        <?php foreach ($term_query ->terms as $term) {?>
            <li>
                <?php echo $term->name;?>
            </li>
        <?php } ?>
    <?php } ?>
    <?php wp_reset_postdata();?>
</ul>

以上就是本文的内容,希望对您能有所帮助!