我设置了一个函数,可以为每个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 }
} ?>
任何关于如何实现这一目标的建议都将不胜感激!
最合适的回答,由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>\';
}
}