如何获取一个帖子类型的所有分类?

时间:2011-06-21 作者:Sisir

How can i get taxonomies of a post type?

如果我有帖子类型event 我需要找出附加到该帖子类型的分类列表。我怎么找到他们?

7 个回复
最合适的回答,由SO网友:Sisir 整理而成

我想我找到了!在研究了分类法中的几个函数之后。我在WordPress中找到的php文件the function get_object_taxonomies(); 成功的秘诀是:)

SO网友:addedlovely

get_categories 将完成这项工作。

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

SO网友:Reigel

你试过什么吗?像这样的?

<?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>\';
  }
}
?>

SO网友:Nick B
$taxonomies = get_taxonomies( [ \'object_type\' => [ \'custom_post_type\' ] ] );
SO网友:gregdev

使用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).

SO网友:seemly

很抱歉提出了一个旧帖子,但我在为我的用例寻找答案时遇到了这个问题。

我想检索一个post类型的所有可用分类法,还想检索每个分类法的所有可用术语。

感谢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;        
  }
}

SO网友:Carlos Trujillo
结束

相关推荐

Custom Taxonomy Term Caching?

我有两种自定义帖子类型,“事件”和“机会”。它们共享一个自定义的层次分类法“位置”。我的客户添加了一些条款(美国(家长),然后是几个州(孩子))。我决定通过wp\\u insert\\u term添加其余的州来节省时间。这很有效!或者,看起来是这样。作为一名管理人员,这些条款对我来说很好。当我登录到一个“贡献者”帐户时,我可以去创建一个新的“机会”,所有的条件都如预期的那样显示出来。当要创建一个新的“事件”时,只会显示手工创建的术语。您可以通过“事件”在现场添加一个新术语,它在位置管理器中显示得很好。就好