get_terms【详解】
get_terms描述 您可以在发送查询之前完全注入任何自定义项,并使用过滤器控制输出。 该“get_term…
get_terms描述
您可以在发送查询之前完全注入任何自定义项,并使用过滤器控制输出。
该“get_terms”当缓存期限,并通过发现长期使用$分类的阵列沿和$args来滤镜阵列将被调用。在传递术语数组之前也会调用此过滤器,并将传递术语数组以及$taxonomies和$args。
该“list_terms_exclusions”过滤器经过编译排除用的$ args一起。
该“get_terms_orderby”过滤器传递ORDER BY的查询子句与$ args数组沿。
在4.5.0之前,第一个参数get_terms()是分类法或分类法列表:
1
2
3
|
$terms = get_terms( ‘post_tag’, array(
‘hide_empty’ => false,
) );
|
从4.5.0开始,分类法应该通过$args数组中的“taxonomy”参数传递:
1
2
3
4
|
$terms = get_terms( array(
‘taxonomy’ => ‘post_tag’,
‘hide_empty’ => false,
) );
|
get_terms参数
$args
(string | array) (可选) 数组或参数字符串。有关已 接受参数的信息,请参阅WP_Term_Query :: __ construct()。
默认值:array()
$deprecated
(array) (可选) 参数数组,使用遗留函数参数格式时。如果存在,则此参数将被解释为$args,并且第一个函数参数将被解析为分类法或分类法数组。
默认值:
get_terms返回
(array | int | WP_Error)WP_Term实例及其子项的列表。如果任何$taxonomies不存在,将返回WP_Error。
Changelog
更新日志
版 描述
4.8.0 引入’suppress_filter’参数。
4.5.0 更改了函数签名,以便可以将$args数组作为第一个参数提供。引入了’meta_key’和’meta_value’参数。引入了按元数据订购结果的功能。
4.4.0 引入了将’term_id’作为orderby参数的’id’别名传递的功能。引入了’meta_query’和’update_term_meta_cache’参数。转换为返回WP_Term对象的列表。
4.2.0 引入了’name’和’childless’参数。
2.3.0 介绍。
get_terms实例
按自定义分类法获取类别和子类别:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
$taxonomies = get_terms( array(
‘taxonomy’ => ‘taxonomy_name’,
‘hide_empty’ => false
) );
if ( !empty($taxonomies) ) :
$output = ‘<select>’;
foreach( $taxonomies as $category ) {
if( $category->parent == 0 ) {
$output.= ‘<optgroup label=”‘. esc_attr( $category->name ) .‘”>’;
foreach( $taxonomies as $subcategory ) {
if($subcategory->parent == $category->term_id) {
$output.= ‘<option value=”‘. esc_attr( $subcategory->term_id ) .‘”>
‘. esc_html( $subcategory->name ) .‘</option>’;
}
}
$output.=‘</optgroup>’;
}
}
$output.=‘</select>’;
echo $output;
endif;
|
获取所有链接类别:
1
|
$my_links_categories = get_terms( ‘link_category’, ‘orderby=count&hide_empty=0’ );
|
扩展阅读
get_all_category_ids()函数位于:wp-includes/taxonomy.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
function get_terms( $args = array(), $deprecated = ” ) {
$term_query = new WP_Term_Query();
$defaults = array(
‘suppress_filter’ => false,
);
/*
* Legacy argument format ($taxonomy, $args) takes precedence.
*
* We detect legacy argument format by checking if
* (a) a second non-empty parameter is passed, or
* (b) the first parameter shares no keys with the default array (ie, it’s a list of taxonomies)
*/
$_args = wp_parse_args( $args );
$key_intersect = array_intersect_key( $term_query->query_var_defaults, (array) $_args );
$do_legacy_args = $deprecated || empty( $key_intersect );
if ( $do_legacy_args ) {
$taxonomies = (array) $args;
$args = wp_parse_args( $deprecated, $defaults );
$args[‘taxonomy’] = $taxonomies;
} else {
$args = wp_parse_args( $args, $defaults );
if ( isset( $args[‘taxonomy’] ) && null !== $args[‘taxonomy’] ) {
$args[‘taxonomy’] = (array) $args[‘taxonomy’];
}
}
if ( ! empty( $args[‘taxonomy’] ) ) {
foreach ( $args[‘taxonomy’] as $taxonomy ) {
if ( ! taxonomy_exists( $taxonomy ) ) {
return new WP_Error( ‘invalid_taxonomy’, __( ‘Invalid taxonomy.’ ) );
}
}
}
// Don’t pass suppress_filter to WP_Term_Query.
$suppress_filter = $args[‘suppress_filter’];
unset( $args[‘suppress_filter’] );
$terms = $term_query->query( $args );
// Count queries are not filtered, for legacy reasons.
if ( ! is_array( $terms ) ) {
return $terms;
}
if ( $suppress_filter ) {
return $terms;
}
/**
* Filters the found terms.
*
* @since 2.3.0
* @since 4.6.0 Added the `$term_query` parameter.
*
* @param array $terms Array of found terms.
* @param array $taxonomies An array of taxonomies.
* @param array $args An array of get_terms() arguments.
* @param WP_Term_Query $term_query The WP_Term_Query object.
*/
return apply_filters( ‘get_terms’, $terms, $term_query->query_vars[‘taxonomy’], $term_query->query_vars, $term_query );
}
|
本文收集自互联网,转载请注明来源。
如有侵权,请联系 wper_net@163.com 删除。
还没有任何评论,赶紧来占个楼吧!