2014-11-05 50 views
0

我有一個沃克顯示分類術語(見文章here)。這是一個分層列表爲3級深:(含崗位數量的所有子級別)WordPress的:按分類學動態查詢/過濾帖子term_id

分類

  1. 方面

    1.1。子帖子(帖子數量包括子帖子1 & 2)

    1.1.1。 subsubterms(帖子的數量)

    • 顯示交與類別 「Subsubterms」

    1.1.2 subsubterms(帖子的數量)

    • 顯示交與類別 「Subsubterms」

這些條款顯示正常,但在帖子上的帖子ubterm級別不顯示。 以下代碼僅顯示來自「未分類」類別的帖子。

add_filter('XYZ_index', 'return_XYZ_index'); 

function return_XYZ_index() 
{ 

    $taxonomies = array( 
    'XYZ' 
); 

    $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) { 

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

     //count posts in terms plus subterms 
      $count = 0; 
      $countargs = array(
      'child_of' => $term->term_ID, 
      ); 
      $tax_terms = get_terms($taxonomies,$countargs); 
      foreach ($tax_terms as $tax_term) { 
      $count +=$tax_term->count; 
      } 

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

     //count posts in subterm 
     $countsub = 0; 
     $countsubargs = array(
     'child_of' => $subterm->term_id, 
     ); 
     $tax_term_subs = get_terms($taxonomies, $countsubargs); 
     foreach ($tax_term_subs as $tax_term_sub) { 
     $countsub +=$tax_term_sub->count; 
     } 


     $return .= '<ul>'; 

     foreach ($subterms as $subterm) { 

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

      // return subterms 
      $return .= sprintf(
      '<li id="category-%1$s" class="toggle">%2$s <span class="post-count">' . $countsub . '</span><span class="cat-description">%3$s</span>',  
      $subterm->term_id, 
      $subterm->name, 
      $subterm->description 
     ); 

      $return .= '<ul>'; 

      foreach ($subsubterms as $subsubterm) { 

      // return subsubterms 
      $return .= sprintf(
      '<li id="category-%1$s" class="toggle">%2$s <span class="post-count">%3$s</span><span class="cat-description">%4$s</span>',  
      $subsubterm->term_id, 
      $subsubterm->name, 
      $subsubterm->count, 
      $subsubterm->description 
      ); 

      // return posts (**EDITED CODE**) 

      $postargs = array(
      'tax_query' => array(
       array(
       'taxonomy' =>'XYZ, 
       'field' => 'id', 
       'terms' => $subsubterm->term_id 
       ) 
      ) 
      ); 
      $post_query = new WP_Query($args); 
      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; 

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

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

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

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

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

    $return .= '</ul>'; 

    return $return; 
} 

我不知道,如果這部分甚至有可能:

'term' => $subsubterm->term_id 

謝謝!

+0

請提供完整的代碼,以便可以檢查 – 2014-11-05 10:45:43

+0

完成代碼添加,謝謝! – george 2014-11-05 11:01:39

回答

0

將類別替換爲您的實際分類。 使用下面的代碼:

  $args = array(
       'tax_query' => array(
       array(
       'taxonomy' =>'category', 
       'field' => 'id', 
       'terms' => $subsubterm->term_id 
      ) 
      ) 
    ); 
$post_query = new WP_Query($args); 
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; 

或者你可以使用完整的代碼提供如下:

function return_XYZ_index() 
{ 

    $taxonomies = array( 
    'XYZ' 
); 

    $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) { 

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

     //count posts in terms plus subterms 
      $count = 0; 
      $countargs = array(
      'child_of' => $term->term_ID, 
      ); 
      $tax_terms = get_terms($taxonomies,$countargs); 
      foreach ($tax_terms as $tax_term) { 
      $count +=$tax_term->count; 
      } 

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

     //count posts in subterm 
     $countsub = 0; 
     $countsubargs = array(
     'child_of' => $subterm->term_id, 
     ); 
     $tax_term_subs = get_terms($taxonomies, $countsubargs); 
     foreach ($tax_term_subs as $tax_term_sub) { 
     $countsub +=$tax_term_sub->count; 
     } 


     $return .= '<ul>'; 

     foreach ($subterms as $subterm) { 

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

      // return subterms 
      $return .= sprintf(
      '<li id="category-%1$s" class="toggle">%2$s <span class="post-count">' . $countsub . '</span><span class="cat-description">%3$s</span>',  
      $subterm->term_id, 
      $subterm->name, 
      $subterm->description 
     ); 

      $return .= '<ul>'; 

      foreach ($subsubterms as $subsubterm) { 

      // return subsubterms 
      $return .= sprintf(
      '<li id="category-%1$s" class="toggle">%2$s <span class="post-count">%3$s</span><span class="cat-description">%4$s</span>',  
      $subsubterm->term_id, 
      $subsubterm->name, 
      $subsubterm->count, 
      $subsubterm->description 
      ); 

      // return posts 
      $args = array(
        'tax_query' => array(
        array(
        'taxonomy' =>'category', 
        'field' => 'id', 
        'terms' => $subsubterm->term_id 
       ) 
       ) 
     ); 
    $post_query = new WP_Query($args); 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; 

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

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

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

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

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

    $return .= '</ul>'; 

    return $return; 
} 
+0

這樣做了!我想是時候繼續前進並做其他事情了;-)我實現了你的代碼片斷,但它不起作用。然後我用你的完整代碼和 - Tadaa - 這裏是:每個subsubterm的帖子。必須在某處出現錯字。無論如何,我不能夠感謝你! – george 2014-11-05 11:26:32

+0

不幸的是,計數是關閉的。這個想法是計算每個級別的職位,包括其子級別。 sububterms中的帖子數量是正確的,但在子級別和term級別上,來自_all_項的帖子將被計數。 – george 2014-11-05 11:46:25

+0

你想得到什麼?計數或職位列表? – 2014-11-05 11:54:57

相關問題