获取父项和子项的分类术语

时间:2014-11-10 作者:user1374796

我设置了一个函数,可以为每个products-category 存在分类术语。这很好,但它只是按字母顺序显示它们(无论它们是否是父/子分类术语):

Parent Category 2
Parent Category 1
Child Category 3
Parent Category 3
Child Category 2
Child Category 1 
etc...
而我想要的结构更像这样:

—Parent Category 1
Child Category 1
Child Category 2
Child Category 3

—Parent Category 2
Child Category 1
Child Category 2
Child Category 3

—Parent Category 3
Child Category 1
Child Category 2
Child Category 3
因此,每个分类术语的子术语都位于下面,因此您知道它们属于哪个父术语。我的标记如下:

<?php
$args = array(
    \'hide_empty\' => false
);  
 $terms = get_terms("products-category");
 if ( !empty( $terms ) && !is_wp_error( $terms ) ){
     foreach ( $terms as $term ) { ?>
      <option value=".<?php echo $term->slug; ?>" data-hook="<?php echo $term->slug; ?>"><?php echo $term->name; ?></option>
    <?php }
 } ?>   
任何关于如何实现这一目标的建议都将不胜感激!

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

您应该有两个foreach循环。一个用于获取父分类术语,第二个用于获取子分类术语。

在第二个foreach中,您需要指定父分类术语ID,即$parent_term->term_id 来自第一个foreach循环。

foreach( get_terms( \'products-category\', array( \'hide_empty\' => false, \'parent\' => 0 ) ) as $parent_term ) {
  // display top level term name
  echo $parent_term->name . \'<br>\';

  foreach( get_terms( \'products-category\', array( \'hide_empty\' => false, \'parent\' => $parent_term->term_id ) ) as $child_term ) {
    // display name of all childs of the parent term
    echo $child_term->name . \'<br>\';
  }

}

SO网友:Pieter Goosen

你可以简单地利用wp_list_categories 显示您的列表。它非常通用,可以轻松修改以满足您的特定需求。虽然名称表明它只是用于内置分类法category, 事实并非如此。它可以用于任何分类法

您必须通过示例等进行操作,并根据需要进行修改。下面是一个可以用来显示列表的简单示例

wp_list_categories(\'taxonomy=products-category\');

结束

相关推荐

Separator for multiple terms

我试图展示自定义分类法的术语。我有这个。但是,当我有多个术语时,我的问题是如何分离我的代码:<ul class=\"slides\"> <?php $loop = new WP_Query( array( \'post_type\' => \'member\', \'posts_per_page\' => -1 ) ); ?> <?php while ( $loop->have_posts() ) : $loop->th