2017-04-09 46 views
0

我試圖將來自cpt的帖子放入不同的引導程序選項卡中。創建if語句按照類別從cpt在wordpress中篩選帖子

到目前爲止,我正在獲取第一個選項卡上的所有帖子標題。然後,我在第二個選項卡上獲得一個帖子標題,並在以下兩個標籤上獲得相同的標題。類別不是自定義分類法,而是與自定義帖子類型關聯的默認WordPress分類。自定義後類型被稱爲「華爾街日報」和代碼是存檔journal.php內

PHP

<!-- Tab panes --> 
<div class="tab-content"> 

    <?php if (have_posts()) : ?> 
     <?php while (have_posts()) : the_post(); ?> 

      <!-- cambridge winter college --> 
      <div role="tabpanel" class="tab-pane active" id="tab1"> 
       <!-- accordian --> 
        <div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true"> 
         <?php if (in_category('cambridge-winter-college')) ?> 
          <?php the_title(); ?> 
        </div> 
       <!--/accordian --> 
       <div class="terminator"></div> 
      </div> 
      <!--/cambridge winter college --> 

      <!-- oxford summer 1 --> 
      <div role="tabpanel" class="tab-pane" id="tab2"> 
       <!-- oxford summer college 1 --> 
       <div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true"> 
        <?php if (in_category('oxford_summer_college_1')) ?> 
         <?php the_title(); ?> 
       </div> 
      </div> 
      <!--/oxford summer 1 --> 


      <!-- oxford summer college 2 --> 
      <div role="tabpanel" class="tab-pane" id="tab3"> 
       <div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true"> 
        <?php if (in_category('oxford_summer_college_2')) ?> 
         <?php the_title(); ?> 
       </div> 
      </div> 
      <!--/oxford summer college 2 --> 

      <!-- cambridge summer college --> 
      <div role="tabpanel" class="tab-pane" id="tab4"> 
       <div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true"> 
        <?php if (in_category('cambridge_summer_college')) ?> 
         <?php the_title(); ?> 
       </div> 
      </div> 
      <!-- /cambridge summer college --> 

     <?php endwhile; ?> 
    <?php endif; ?> 

</div> 
<!--/tab content --> 

就如何實現這一目標的任何想法?

感謝

回答

0

經過很多掙扎和思考,我找到了答案。我在wordpress閱讀設置中將我的最大帖子設置爲10!衛生署!所以,通過改變這個設置或者更好的一個非常簡單的修復方法,我仍然可以在css技巧中找到它。它用-1設置調用CPT的所有帖子。將日誌更改爲您的cpt名稱。

PHP

// CPT all posts in Archive layout 
function set_posts_per_page_for_journal_cpt($query) { 
    if (!is_admin() && $query->is_main_query() && is_post_type_archive('journal')) { 
    $query->set('posts_per_page', '-1'); 
    } 
} 
add_action('pre_get_posts', 'set_posts_per_page_for_journal_cpt'); 

?> 
1

你必須重新組織你的代碼的結構。這裏的問題是你顯示每個帖子的所有標籤,因爲標籤在循環內。

儘量做到以下幾點:

<div class="tab-content"> 
    <?php if (have_posts()) : ?> 

     <!-- cambridge winter college --> 
     <div role="tabpanel" class="tab-pane active" id="tab1"> 
      <!-- accordian --> 
      <div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true"> 
       <?php while (have_posts()) : the_post(); ?> 
        <?php if (in_category('cambridge-winter-college')) : ?> 
         <?php the_title(); ?> 
        <?php endif; ?> 
       <?php endwhile; ?> 
      </div> 
      <!--/accordian --> 
      <div class="terminator"></div> 
     </div> 
     <!--/cambridge winter college --> 

     <?php rewind_posts(); ?> 

     <!-- REPEAT THE CODE ABOVE FOR OTHER TABS --> 

    <?php endif; ?> 
</div> 
<!--/tab content --> 

這種方式,您會通過選項卡里面的帖子循環。

讓我知道這是否有效。

UPDATE

調用每個循環之間rewind_posts()

+0

嗨,其實這似乎工作,但我現在看到,從其他類別的職位沒有得到把在網頁上。第一個很好,但第二個,第三個和第四個標籤沒有!請參閱我的完整代碼塊:http://stackoverflow.com/questions/43324052/post-loop-in-category-filter-not-working – vincentieo

+0

@vincentieo,你應該更新你的問題,而不是創建一個新的。無論如何,你可能不得不在每個循環之間調用'rewind_posts()'。查看此頁面中的示例:https://developer.wordpress.org/reference/functions/rewind_posts/ –

+0

對不起,我沒有意識到我應該更新。 – vincentieo