如果是针对产品类别,则此函数只需要类别id即可知道子项:
function cat_childs( $term_id = 0) {
$children = get_terms( array(
\'child_of\' => $term_id,
\'taxonomy\' => \'product_cat\',
\'hide_empty\' => true,
\'fields\' => \'ids\',
));
return ( $children );
}
可以这样称呼:
cat_childs(1234);
因为它可以返回多个,我们可以先使用
$a = cat_childs(1234);
echo \'<pre>\';
print_r($a);
如果是这样的话,我们只需要做一个foreach循环就可以得到它们。
这是我的代码,在第三代之前,我都会用它们制作一个菜单,它使用cat\\u childs()函数来检查是否需要下一个循环。
$cat_args = array( \'orderby\' => \'name\', \'order\' => \'asc\', \'hide_empty\' => true);
$cats = get_terms( \'product_cat\', $cat_args );
foreach ($cats as $key => $cat):
if ($cat->parent == 0): ?>
<p><a href="<?php echo get_term_link($cat) ?>" style="color:red;"><?php echo $cat->name; ?></a></p><?php
if (cat_childs($cat->term_id)):
foreach ($cats as $key => $cat2):
if ($cat2->parent == $cat->term_id): ?>
<p><a href="<?php echo get_term_link($cat2) ?>" style="margin-left:20px; color:blue;"><?php echo $cat2->name; ?></a></p><?php
if (cat_childs($cat2->term_id)):
foreach ($cats as $key => $cat3):
if ($cat3->parent == $cat2->term_id): ?>
<p><a href="<?php echo get_term_link($cat3) ?>" style="margin-left:40px; color:green;"><?php echo $cat3->name; ?></a></p><?php
endif;
endforeach;
endif;
endif;
endforeach;
endif;
endif;
endforeach;