在三列中显示自定义分类法,从第一个 children 开始
Display Custom Taxonomy in three columns, starting with first children
我有一个 3 层深的分类结构,名称为 'services_tax':
Parent
- Child
- -孙子
- -孙子
我正在尝试显示与当前自定义 post 关联的所有分类法,并将它们作为列 div(三分之一)回显,而不是像这样显示第一个 parent:
- Child
- -孙子
- -孙子
我在下面使用的代码是我所能得到的,但是,在 get_the_terms foreach 循环中使用 get_terms 是抓取与 post 无关的术语。
<div class="three-column cf">
<?php
$myterm = 'services_tax';
$terms = get_the_terms( get_the_ID(), $myterm );
if ( $terms ) :
?>
<?php $i = 0; ?>
<?php foreach ( $terms as $term ) : ?>
<?php if ( $term->parent == 0 ) : ?>
<?php
$subargs = array(
'orderby' => 'name',
'order' => 'ASC',
'hide_empty' => true,
'hierarchical' => true,
'child_of' => $term->term_id,
'parent' => $term->term_id
);
$children = get_terms( $myterm, $subargs );
?>
<?php if( $children ) : //if it has sub-categories ?>
<?php foreach( $children as $child ) : ?>
<?php if ( $i != 0 && $i % 3 == 0 ) : ?>
</div><!-- .three-column -->
<div class="three-column cf">
<?php endif; ?>
<div class="third">
<?php //var_dump($i); ?>
<h4 class="h3"><?php echo $child->name; ?></h4><!-- .h3 -->
<?php
$subsubargs = array(
'orderby' => 'name',
'order' => 'ASC',
'hide_empty' => true,
'hierarchical' => true,
'child_of' => $child->term_id,
'parent' => $child->term_id
);
$sub_children = get_terms( $myterm, $subsubargs );
?>
<?php if( $sub_children ) : //if it has sub-sub-categories ?>
<ul>
<?php foreach( $sub_children as $sub_child ) : ?>
<li><?php echo $sub_child->name; ?></li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
</div><!-- .third -->
<?php $i++; ?>
<?php endforeach; ?>
<?php endif; ?>
<?php endif; ?>
<?php endforeach; ?>
<?php endif; ?>
我已经经历了尽可能多的 Whosebug questions/answers,但运气不佳
This post 最有帮助。
如果我只能使用 get_the_terms 并传递一个参数,我觉得我可以弄清楚。我感觉很困难,任何帮助将不胜感激。
我想我刚刚弄明白了,在 foreach 中使用 wp_get_post_terms() 而不是 get_terms()。
我有一个 3 层深的分类结构,名称为 'services_tax':
Parent
- Child
- -孙子
- -孙子
我正在尝试显示与当前自定义 post 关联的所有分类法,并将它们作为列 div(三分之一)回显,而不是像这样显示第一个 parent:
- Child
- -孙子
- -孙子
我在下面使用的代码是我所能得到的,但是,在 get_the_terms foreach 循环中使用 get_terms 是抓取与 post 无关的术语。
<div class="three-column cf">
<?php
$myterm = 'services_tax';
$terms = get_the_terms( get_the_ID(), $myterm );
if ( $terms ) :
?>
<?php $i = 0; ?>
<?php foreach ( $terms as $term ) : ?>
<?php if ( $term->parent == 0 ) : ?>
<?php
$subargs = array(
'orderby' => 'name',
'order' => 'ASC',
'hide_empty' => true,
'hierarchical' => true,
'child_of' => $term->term_id,
'parent' => $term->term_id
);
$children = get_terms( $myterm, $subargs );
?>
<?php if( $children ) : //if it has sub-categories ?>
<?php foreach( $children as $child ) : ?>
<?php if ( $i != 0 && $i % 3 == 0 ) : ?>
</div><!-- .three-column -->
<div class="three-column cf">
<?php endif; ?>
<div class="third">
<?php //var_dump($i); ?>
<h4 class="h3"><?php echo $child->name; ?></h4><!-- .h3 -->
<?php
$subsubargs = array(
'orderby' => 'name',
'order' => 'ASC',
'hide_empty' => true,
'hierarchical' => true,
'child_of' => $child->term_id,
'parent' => $child->term_id
);
$sub_children = get_terms( $myterm, $subsubargs );
?>
<?php if( $sub_children ) : //if it has sub-sub-categories ?>
<ul>
<?php foreach( $sub_children as $sub_child ) : ?>
<li><?php echo $sub_child->name; ?></li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
</div><!-- .third -->
<?php $i++; ?>
<?php endforeach; ?>
<?php endif; ?>
<?php endif; ?>
<?php endforeach; ?>
<?php endif; ?>
我已经经历了尽可能多的 Whosebug questions/answers,但运气不佳
This post 最有帮助。
如果我只能使用 get_the_terms 并传递一个参数,我觉得我可以弄清楚。我感觉很困难,任何帮助将不胜感激。
我想我刚刚弄明白了,在 foreach 中使用 wp_get_post_terms() 而不是 get_terms()。