$args = array( 'public' => true, 'object_type' =>array('demand'), ); $output = 'object'; // or objects $operator = 'and'; // 'and' or 'or' $taxonomies = get_taxonomies( $args, $output, $operator ); if ( $taxonomies ) { foreach ( $taxonomies as $taxonomy ) { if( is_taxonomy_hierarchical($taxonomy->name) ){ echo $taxonomy->labels->name; }else{ echo $taxonomy->labels->name.'没有层级'; } } }unset($taxonomy);
这样就输出了注册到demand类型下的所有taxonomy
2019.02.01补充
截至wp5.0这个函数有个bug,就是如果一个taxonomy同时关联了多个post type,当指定post type查询时,是无法输出这个taxonomy的。
解决办法只能是先查询出全部的taxonomy,然后获取taxonomy的 object type数组,查询当前post type是否匹配:
$post_type = 'demand' $cat_taxonomies = array(); $tag_taxonomies = array(); $taxonomies = get_taxonomies(array(), 'object', 'and' ); if ( $taxonomies ) { foreach ( $taxonomies as $taxonomy ) { if(!in_array($post_type,$taxonomy->object_type)){ continue; } if( is_taxonomy_hierarchical($taxonomy->name) ){ array_push($cat_taxonomies, $taxonomy->name); }else{ array_push($tag_taxonomies, $taxonomy->name); } }unset($taxonomy); }
微信扫描下方的二维码阅读本文