如果我有一个职位类型
event
,我需要找出该职位类型附带的分类法列表。如何找到它们?#1 楼
我想我明白了!在查看WordPress的taxonomy.php文件中的几个功能后,我发现了有效的功能get_object_taxonomies();
:) #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;
}
}
评论
看到更多信息: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