我很难在以特定方式呈现的自定义分类法中获得一组选定的术语。
我有一个层次分类法“位置”和一篇带有标记术语的帖子:
England (x)
- London (x)
- Venue1 (x)
France (x)
- Paris (x)
- Venue2
Germany
- Berlin (x)
- Venue3 (x)
我需要打印:
myPostTitle : Venue1 (London - England)
Paris (France)
Venue3 (Berlin)
我的问题是,我找不到一个能够以反映层次关系的方式返回带标签的术语的函数。我需要能够确定:
哪些术语是实际的“场所”(每个层级中“最低”标记的孩子)
这些“最后一个孩子”的父母和祖父母包括哪些我在循环之外,不希望运行setup\\u postdata()。我有邮政ID。
SO网友:mrwweb
我怀疑您是否会找到一个创建了您正在使用的确切输出的函数,因此您可能正在查看两个嵌套调用get_terms()
. 我通常避免使用大多数其他与分类法相关的插件,而使用get术语。大多数其他函数都是此函数的包装器。
下面是一些我要做的psuedo代码:
<?php
// Get all the top-level terms i.e. those without a parent
$top_level_terms = get_terms( \'my_taxonomy\', array( \'parent\' => 0 ) );
foreach( $top_level_terms as $top_term ) {
// get child terms. use parent for direct descendants or child_of for all descendents
$child_terms = get_terms( \'my_taxonomy\', array( \'child_of\' => $top_term->term_id ));
// list the parent term
printf(
\'<a href="%1$s">%2%s</a> (\',
esc_url( get_term_link( $top_term->term_id ) ),
esc_attr( $top_term->name )
);
// list all the child terms
foreach ( $child_terms as $child_term ) {
printf(
\'<a href="%1$s">%2%s</a>, \',
esc_url( get_term_link( $child_term->term_id ) ),
esc_attr( $child_term->name )
);
}
echo \')\';
}
该代码未经测试,当然需要您提供一些额外的参数,但希望这可以帮助您开始。