如果我有一个职位类型event,我需要找出该职位类型附带的分类法列表。如何找到它们?

#1 楼

我想我明白了!在查看WordPress的taxonomy.php文件中的几个功能后,我发现了有效的功能get_object_taxonomies(); :)

评论


看到更多信息:codex.wordpress.org/Function_Reference/get_object_taxonomies

–曼妮·弗勒蒙德(Manny Fleurmond)
2011年6月21日13:15

哇...很高兴了解get_object_taxonomies()。它只是帮助我劫持了template_redirect

–helgatheviking
2011年11月10日,下午3:17

嗨,谢谢你,但是如何通过ID而不是NAME来订购它们呢?

–dh47
2015年10月19日在7:08

最简单的方法是使用for或foreach循环对它们进行排序。

–西西尔
2015年10月19日,9:25

是的,我正在使用foreach循环进行获取,但是我正在按名称获取订单$ taxonomies = get_object_taxonomies(array('post_type'=> $ post_type));; foreach($ taxonomies as $ taxonomy)://获取此分类法中的每个“类别”(术语),以获取相应的帖子$ terms = get_terms($ taxonomy); ?>
    <?php foreach($ terms as $ term):?>
  • <?php echo $ term-> name; ?>



    –dh47
    2015年10月19日10:19



#2 楼

get_categories将完成这项工作。

get_categories('taxonomy=taxonomy_name&type=custom_post_type'); 


评论


(我想我是否理解正确的问题!)

–可爱
2011年6月21日,11:46

问题是我没有任何分类名称,这就是我要查找的名称。我只有职位类型的名称。通过帖子类型名称,我想找出所有附加到其上的分类法。不管怎么说,还是要谢谢你!

–西西尔
2011年6月21日,12:47

#3 楼

你有尝试过吗?像这样吗?

<?php 

$args=array(
  'object_type' => array('event') 
); 

$output = 'names'; // or objects
$operator = 'and'; // 'and' or 'or'
$taxonomies=get_taxonomies($args,$output,$operator); 
if  ($taxonomies) {
  foreach ($taxonomies  as $taxonomy ) {
    echo '<p>'. $taxonomy. '</p>';
  }
}
?>


评论


看着get_taxonomies();在法典上的功能,但它的文档非常差,不知道如何传递帖子类型。

–西西尔
2011年6月21日在9:56

抱歉,此代码返回了wordpress中所有已注册的分类法。

–西西尔
2011年6月21日9:59

#4 楼

$taxonomies = get_taxonomies( [ 'object_type' => [ 'custom_post_type' ] ] );


#5 楼

使用get_object_taxonomies(https://developer.wordpress.org/reference/functions/get_object_taxonomies/),它将您的自定义帖子类型的名称或帖子对象作为参数:

$taxonomies = get_object_taxonomies('custom_post_type');
$taxonomies = get_object_taxonomies($custom_post_object);


get_taxonomies()不会返回多种帖子类型使用的任何分类法(https://core.trac.wordpress.org/ticket/27918)。

#6 楼

道歉以提出旧帖子,但是我在寻找用例答案时碰到了它。
我想检索帖子类型的所有可用分类法,还希望根据分类法检索所有可用术语。
感谢Nick B为我设定正确的答案:https://wordpress.stackexchange.com/a/357448/198353
// get a list of available taxonomies for a post type
$taxonomies = get_taxonomies(['object_type' => ['your_post_type']])

$taxonomyTerms = [];

// loop over your taxonomies
foreach ($taxonomies as $taxonomy)
{
  // retrieve all available terms, including those not yet used
  $terms    = get_terms(['taxonomy' => $taxonomy, 'hide_empty' => false]);

  // make sure $terms is an array, as it can be an int (count) or a WP_Error
  $hasTerms = is_array($terms) && $terms;

  if($hasTerms)
  {
    $taxonomyTerms[$taxonomy] = $terms;        
  }
}