2016-04-13 48 views
0

編輯:在改變tax_query到slu it之後,它現在在第一個循環(第一隻貓)中輸出帖子,但不在下一個標籤/貓,我知道有很多已發佈帖子分配給它。Wordpress WP_Query裏面的get_categories不與CPT合作

我創建了一個短代碼,旨在獲取CPT中的所有類別,並將它們導出到引導程序選項卡中,併爲每個選項卡提供一定數量的帖子。

爲此,我爲選項卡nav(工作正常)做了get_categories。 然後,我再次get_categories輸出標籤內容(也工作正常)與每個我抓住帖子內的wp_query。這是什麼不工作。沒有輸出。

如果我回顯類別名稱或我可以從get_categories中獲取的任何數據,它會回顯它。所以這似乎是WP_Query的問題。

下面是代碼:

add_shortcode('tabbed_grid_articles', 'tabbed_grid_articles'); 
function tabbed_grid_articles($args = array()){ 
    global $post; 
    $current_id = $post->ID; 
    $defaults = apply_filters('dy_tabbed_grid_default_args', array(
     'posts_per_page' => 1, 
     'orderby'  => 'date', 
     'order'   => 'DESC', 
     'echo'   => true, 
     'post_type'  => 'playbooks', 
     'category'  => 0, 
     'hide_empty' => true, 
     'exclude'  => '', 
     'include'  => '', 
     'taxonomy'  => 'playbooks_category', 

    )); 

    $args = wp_parse_args($args, $defaults); 

    $cat_args = array(
     'taxonomy'  => $args['taxonomy'], 
     'orderby'  => 'menu_order', 
     'order'   => 'ASC', 
     'hierarchical' => true, 
     'parent'  => $args['category'], 
     'hide_empty' => $args['hide_empty'], 
     'child_of'  => $args['category'], 
     'exclude'  => $args['exclude'], 
     'include'  => $args['include'] 
    ); 

    $categories = get_categories($cat_args); 
    ?> <ul class="nav nav-tabs" role="tablist"> <?php 
     $count = 0; 
     foreach($categories as $category){ 
      $targetID = str_replace(' ', '-', $category->cat_name); 
      ?>  <!-- Nav tabs --> 
      <li role="presentation" class="<?php if($count == 0){echo 'active'; $count ++;} ?>"><a href="#tab-<?php echo $targetID ?>" aria-controls="tab-<?php echo $targetID ?>" role="tab" data-toggle="tab"><?php echo $category->cat_name ?></a></li> 
      <?php 
     } 
     // wp_reset_postdata(); 
     ?>  </ul> 
    <!-- Tab panes --> 
    <div class="tab-content"> 
     <?php 
     $count = 0; 
     foreach($categories as $category) { 
      $targetID = str_replace(' ', '-', $category->cat_name); 
      $args['tax_query'] = array(array(
        'taxonomy' => $args['taxonomy'], 
        'field' => 'slug', 
        'terms' => $category->cat_name, 
       ), 
      ); 
//   $args['cat'] = $category->cat_ID; 
      $grid_query = new WP_Query($args); 
      ?> 
      <div role="tabpanel" class="tab-pane <?php if($count == 0){echo 'active'; $count ++;} ?>" id="tab-<?php echo $targetID ?>"> 
       <?php 
       if($grid_query->have_posts()) { 
        while ($grid_query->have_posts()) { 
         $grid_query->the_post(); 
         echo get_the_title(); 
         //echo '1<br>'; 
         //echo $args['cat']; 
         //echo $category->cat_name; 
         //echo get_the_excerpt(); 
         echo '<br>'; 
         //the_excerpt(); 
        } 
        wp_reset_postdata(); 
       } 
       ?></div> 
      <?php 
     } 
     ?> 



    </div> 

    <?php 
} 

我嘗試的$ args [ '貓'] = $類別 - > CAT_ID;而不是tax_query,但都不起作用。 如果我評論他們都出來,然後我從cpt的所有帖子。目前只是迴應摘錄...

任何想法?

+0

請原諒一些類似於1
和echo $ args ['cat']的垃圾數據,它只是爲了看看它是否在計算不是當我嘗試操縱該類別時發佈的帖子。 – Allon

回答

0

已解決。我理所當然地認爲,slu was與名字一樣,事實並非如此。 我想我只是在最初調試時沒有工作的時候,才把錯誤的名字改成了這個名字。無論如何,將'terms'=> $ category-> cat_name更改爲'terms'=> $ category-> slug,並且工作正常。

希望這可以幫助未來的人。