我正在编写自定义WordPress脚本,该脚本应该在元素中显示所有自定义分类法。其中一些元素有孩子,另一些则没有。这是表格的代码:
<?php
$terms = get_terms("location", "hide_empty=0");
$count = count($terms);
if ( $count > 0 ){
foreach ( $terms as $term ) {
echo "<option value='" . $term->slug . "'>" . $term->name ."</option>";
}
}
echo "</select>";
问题是,它按字母顺序显示了所有元素,包括父母和孩子。我希望孩子被嵌套在父母的下方,但我不知道如何做。谁能提供帮助?
这是$ terms数组的print_r:
Array
(
[0] => stdClass Object
(
[term_id] => 18
[name] => Andrijevica
[slug] => andrijevica
[term_group] => 0
[term_taxonomy_id] => 18
[taxonomy] => location
[description] =>
[parent] => 0
[count] => 0
)
[1] => stdClass Object
(
[term_id] => 19
[name] => Berane
[slug] => berane
[term_group] => 0
[term_taxonomy_id] => 19
[taxonomy] => location
[description] =>
[parent] => 0
[count] => 0
)
[2] => stdClass Object
(
[term_id] => 17
[name] => Bijelo Polje
[slug] => bijelo-polje
[term_group] => 0
[term_taxonomy_id] => 17
[taxonomy] => location
[description] =>
[parent] => 0
[count] => 0
)
.....
[29] => stdClass Object
(
[term_id] => 53
[name] => Pobrežje
[slug] => pobrezje
[term_group] => 0
[term_taxonomy_id] => 63
[taxonomy] => location
[description] =>
[parent] => 4
[count] => 0
)
[30] => stdClass Object
(
[term_id] => 4
[name] => Podgorica
[slug] => podgorica
[term_group] => 0
[term_taxonomy_id] => 4
[taxonomy] => location
[description] =>
[parent] => 0
[count] => 7
)
如您所见,对于父母,parent为0。子级的父级值设置为父级的term_id。例如,[30]是[29]的父级。
get_term_children()
在循环内使用。
范例:
$taxonomyName = "location"
$terms = get_terms($taxonomyName,array('parent' => 0));
foreach($terms as $term) {
echo '<a href="'.get_term_link($term->slug,$taxonomyName).'">'.$term->name.'</a>';
$term_children = get_term_children($term->term_id,$taxonomyName);
echo '<ul>';
foreach($term_children as $term_child_id) {
$term_child = get_term_by('id',$term_child_id,$taxonomyName);
echo '<li><a href="' . get_term_link( $term_child->name, $taxonomyName ) . '">' . $term_child->name . '</a></li>';
}
echo '</ul>';
}
抱歉,该示例是从我的一个项目中剪切并粘贴的,将创建一个嵌套的UL ..如果您需要它作为下拉选项-很好-我确信您可以根据需要对其进行修改。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句