WordPress:分类术语的层次列表 [英] Wordpress: hierarchical list of taxonomy terms

查看:80
本文介绍了WordPress:分类术语的层次列表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

尽管听起来很简单,但我还是碰壁了:我想返回自定义帖子类型分类术语的层次列表.我得到的是术语和嵌套ul的第一层.但是子条款没有显示.有什么想法吗?

I am hitting a wall here, although it sounds pretty simple: I want to return a hierarchical list of custom post type taxonomy terms. What I get is the first level of terms and nested uls. But the sub terms are not showing. Any ideas?

代码如下:

function return_terms_index() {
  $taxonomies = array( 
    'taxonomy_name',
  );

  $args = array(
    'orderby'           => 'name', 
    'order'             => 'ASC',
    'hide_empty'        => false, 
    'fields'            => 'all',
    'parent'            => 0,
    'hierarchical'      => true,
    'child_of'          => 0,
    'pad_counts'        => false,
    'cache_domain'      => 'core'    
  );

  $terms = get_terms($taxonomies, $args);

  $return .= '<ul>'; 

    foreach ( $terms as $term ) {

      // return terms (working)
      $return .= sprintf(
        '<li id="category-%1$s" class="toggle">%2$s <span class="cat-description">%3$s</span>',       
        $term->term_id,
        $term->name,
        $term->description
      );

        $subterms = get_terms( array(
          'parent'   => $term->term_id,
          'hide_empty' => false
          ));

        $return .= '<ul>';

        foreach ( $subterms as $subterm ) {

          //return sub terms (not working :( )
          $return .= sprintf(
          '<li id="category-%1$s" class="toggle">%2$s <span class="cat-description">%3$s</span>',       
          $subterm->term_id,
          $subterm->name,
          $subterm->description
          );

          $return .= '</li>'; //end subterms li
        }            

        $return .= '</ul>'; //end subterms ul

      $return .= '</li>'; //end terms li
    } //end foreach term

  $return .= '</ul>';

return $return;
}

谢谢!

.这是输出.

<ul>
  <li id="category-176">
    1. <span class="post-count">0</span><span class="cat-description" style="display: none;">Description</span>
    <ul id="subTerm-176" style="display: block;"></ul>
  </li>
  <li id="category-49">
    2. <span class="post-count">0</span><span class="cat-description" style="display: none;">Langtitel/Beschreibung</span>
    <ul id="subTerm-49" style="display: none;"></ul>
  </li>
</ul>

现在,分类列表中返回了分类法. 但是我也想查询和显示第三级分类术语的帖子,而这段代码并不能解决问题.

taxonomies are returned in hierarchical list now, YAY! But I want to query and display posts of third level taxonomy terms as well and this bit of code doesn't do the trick.

$post_query = new WP_Query($taxonomies, array( 
  'term' => $subsubterm->term_id 
  )); ?>

  <?php if ( $post_query->have_posts() ) : 
  $return .= '<ul>';
    while ( $post_query->have_posts() ) : $post_query->the_post(); 
    $return .= '<li><a class="link" href="' . get_permalink() . '">' . get_the_title() . '</a></li>' . "\n";
    endwhile;
  $return .= '</ul>';

wp_reset_postdata();
else:
endif;

它必须是动态的,所以我不能通过名称/子句来指定一个术语.但这有可能吗?

It has to be dynamic, so I can't specify a term by name/slug. But is this even possible?

'term' => $subsubterm->term_id

再次感谢.

推荐答案

您错过了传递$ taxonomies的功能

You have missed to pass $taxonomies in

 $subterms = get_terms($taxonomies, array(
      'parent'   => $term->term_id,
      'hide_empty' => false
      ));

尝试以下代码

function return_terms_index() {
  $taxonomies = array( 
    'taxonomy_name',
  );

  $args = array(
    'orderby'           => 'name', 
    'order'             => 'ASC',
    'hide_empty'        => false, 
    'fields'            => 'all',
    'parent'            => 0,
    'hierarchical'      => true,
    'child_of'          => 0,
    'pad_counts'        => false,
    'cache_domain'      => 'core'    
  );

  $terms = get_terms($taxonomies, $args);

  $return .= '<ul>'; 

    foreach ( $terms as $term ) {

      // return terms (working)
      $return .= sprintf(
        '<li id="category-%1$s" class="toggle">%2$s <span class="cat-description">%3$s</span>',       
        $term->term_id,
        $term->name,
        $term->description
      );

        $subterms = get_terms($taxonomies, array(
          'parent'   => $term->term_id,
          'hide_empty' => false
          ));

        $return .= '<ul>';

        foreach ( $subterms as $subterm ) {

          //return sub terms (not working :( )
          $return .= sprintf(
          '<li id="category-%1$s" class="toggle">%2$s <span class="cat-description">%3$s</span>',       
          $subterm->term_id,
          $subterm->name,
          $subterm->description
          );

          $return .= '</li>'; //end subterms li
        }            

        $return .= '</ul>'; //end subterms ul

      $return .= '</li>'; //end terms li
    } //end foreach term

  $return .= '</ul>';

return $return;
}

这篇关于WordPress:分类术语的层次列表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆