如果是父项,则列出子项,但不显示任何子项

时间:2016-06-22 作者:HennHoneyball

我有一个称为区域的分类法,具有层次结构;

•南部非洲 ;•博茨瓦纳 ;•南非 ;•赞比亚 ;•津巴布韦

在我的分类区域。php模板文件我想在南部非洲(父)列出子术语,在博茨瓦纳(子)不显示任何内容。

我希望显示以下代码:

<?php 
$current_term = get_term_by( \'slug\', get_query_var( \'term\' ), get_query_var( \'taxonomy\' )); ?>
<h5>Countries</h5>
<?php $cats = wp_list_categories( array(
    \'parent\' => $current_term->term_id,
    \'taxonomy\' => $current_term->taxonomy,
    \'hide_empty\' => 0,
    \'hierarchical\' => true,
    \'depth\' => 2,
    \'title_li\' => \'\'
    )); 
?>
<ul>
  <?php foreach ((array)$cats as $cat) {
    echo \'<li><a href="\'. get_category_link($cat).\'" title="\'. $cat->$cat_name .\'">\' . $cat->cat_name . \'</a></li>\'; }
  ?>
</ul>
任何帮助都将不胜感激。

1 个回复
最合适的回答,由SO网友:Pieter Goosen 整理而成

为确保可靠性,您可以从以下位置获取从查询对象查看的当前术语:$GLOBALS[\'wp_the_query\']

$current_term = sanitize_term( $GLOBALS[\'wp_the_query\']->get_queried_object() );
回答您的问题,如果Southern Africa 是顶层,其父项ID应为0. 所有子术语都应具有一个与它们所属的父术语id相对应的数值作为父术语。

记住这一点,您可以简单地检查$current_term->parent, 如果值不是0, 隐藏您的代码

$current_term = sanitize_term( $GLOBALS[\'wp_the_query\']->get_queried_object() );
if ( 0 == $current_term->parent ) {
    // This is a top level page, show our code

        // ADD YOUR CODE HERE

}
只是另一个提示,我会用get_terms() 对于我的列表

相关推荐

GET_THE_TERMS与wp_GET_POST_TERMS中的奇怪结果

我正在尝试制作一个面包屑函数,但有一个小问题。。。使用时:$categories = get_the_terms( $post->ID, \'product_cat\' ); 我得到了一个循环中使用的类别数组,等等。唯一的问题是它是按字母顺序排列的。(我希望它按层次顺序排列。)经过一番挖掘,我发现了一种替代方法,即使用wp\\u get\\u post\\u terms(),但我肯定遗漏了一些东西,因为当我使用此方法时:$categories = wp_get_post_terms( $p