Ordering terms whilst in loop

时间:2020-11-17 作者:user1348927

我有一个页面模板,显示所有;“发布”;在两个自定义分类中,帖子显示在一个表中

$type = $_GET[\'type\'];
$category = $_GET[\'category\'];
    args = array(
        \'post-type\' => \'literature\',
        \'posts_per_page\' => -1,
        \'tax_query\' => array(
            \'relation\' => \'AND\',
                array(
                 \'taxonomy\' => \'type\',
                 \'field\' => \'slug\',
                 \'terms\' => $type
            ),
            array(
                \'taxonomy\' => \'custom-category\',
                \'field\' => \'slug\',
                \'terms\' => $category
            )
    )
    );
    $query = new WP_Query($args);
    
    if ($query->have_posts()) :
        
                
            while ( $query->have_posts() ) : $query->the_post();
我拉一些自定义字段等

现在我需要分配给该职位的条款

<?php $terms = get_the_terms( $post, \'custom-category\' ); foreach($terms as $term) {
?><td class="custom-cat"> <span class="term">
<?php echo $term->name; ?>
</span></td><?php
}

?>
这很好,在前端

<td>Science</td> <td>Space</td>
<td>Earthquakes</td> <td>Science</td>
<td>Science</td> <td>Volcanoes</td>
<td>Science</td> <td>Space</td>
<td>Science</td> <td>Volcanoes</td>
<td>Earthquakes</td> <td>Science</td>
然而,在第二个也是最后一个结果中,你可以看到它将地震置于科学之前?

我的层次结构是

科学(母学期)

-地震(儿童)

-空间(子)

-火山(儿童)

我假设这是因为默认顺序是A-Z?如果我可以按term\\u id下此订单,那么应该可以吗?

我该怎么办

1 个回复
SO网友:user1348927

我刚刚意识到

我已经从这里得到了父级$category=$\\u GET[\'category\'];

所以我更改了代码:

<td class="custom-cat"> <span class="term">
<?php echo $category; ?>
</span></td>

<td class="custom-sub-cat"> <span class="term">
<?php
$terms = get_the_terms( get_the_ID(), \'custom-category\' );

  foreach ( $terms as $term ){
  if ( $term->parent ==! 0 ) {
    echo $term->name;
  }

}
 ?>
</span></td>
由于我每个分类法只有一个父项和一个子项,因此上述方法对我来说很好。