WordPress查询指定post_type下所有taxonomy函数:get taxonomies

$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);
}