2014-11-04 6 views
1

Я нахожусь на стене здесь, хотя это звучит довольно просто: я хочу вернуть иерархический список пользовательских терминов таксономии типа публикации. Я получаю первый уровень терминов и вложенных uls. Но суб-термины не отображаются. Есть идеи?Wordpress: иерархический список терминов таксономии

Вот код:

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> 

Edit: таксономиями возвращаются в иерархическом списке сейчас, YAY! Но я хочу запросить и отобразить сообщения терминов таксономии третьего уровня, и этот бит кода не делает этого трюка.

$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; 

Он должен быть динамическим, поэтому я не могу указать термин по имени/слизу. Но возможно ли это?

'term' => $subsubterm->term_id 

Еще раз спасибо.

ответ

2

Вы пропустили передать $ таксономию в

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

Try следующий код

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; 
} 
+0

Спасибо за указание, что из! Я реализовал ваш код/​​пропущенные системы таксономий, но результат остается прежним (см. Отредактированный пост). – george

+0

Код работает отлично. Проверьте на панели администратора. Есть ли у вас подтерм с назначенным постом? –

+0

Работает ли она сейчас или любая ошибка? –

Смежные вопросы