2017-04-10 65 views
0

我有一個頁面4個引導選項卡。每個選項卡都包含來自不同類別的自定義帖子類型帖子。 4個類別,4個選項卡。這應該很容易使用in_category();但由於某種原因,我只能過濾第一個標籤。剩下的三個標籤完全不顯示帖子。後循環類別過濾器不工作

請參閱我的方法這個問題: Creating if statements to filter posts by category from cpt in wordpress

下面是從存檔journal.php,其中日記是我的CPT代碼。我正在使用高級自定義字段。

PHP

<!-- Tab panes --> 
<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 $entry_count = 0; ?> 
         <?php while (have_posts()) : the_post(); ?> 
          <?php if (in_category('cambridge-winter-college')) : ?> 

           <?php $entry_count++; ?> 

           <!-- entry --> 
           <div class="entry"> 
            <div class="col-lg-3 date"> 
             <time class="cbp_tmtime"><span><?php the_field('day'); ?></span><br> <span><?php the_field('date'); ?><sup><?php the_field('suffix'); ?></sup> <?php the_field('month'); ?></span> </time> 
             <div class="cbp_tmicon"></div> 
            </div> 

            <div class="panel-heading panel-head col-lg-9"> 
             <a data-toggle="collapse" data-parent="#accordion" href="#collapse-cw-<?php echo $entry_count; ?>"> 
              View <?php the_field('day'); ?>'s journal entry 
             </a> 
            </div> 

            <div id="collapse-cw-<?php echo $entry_count; ?>" class="panel-collapse collapse in col-lg-12 pull-right"> 
             <div class="panel-body col-lg-9 pull-right"> 
             <div class="row"> 
              <div class="col-lg-12 entry-text"> 

               <aside class="col-lg-6 pull-right flexbox-2">  
                <div class="schedule" > 
                 <?php $table = get_field('schedule'); 
                  if ($table) { 
                   echo '<table>'; 
                    if ($table['header']) { 
                     echo '<thead><tr>'; 
                      echo ''; 
                       foreach ($table['header'] as $th) { 
                        echo '<th>'; 
                         echo $th['c']; 
                        echo '</th>'; 
                       } 
                      echo '</tr>'; 
                     echo '</thead>'; 
                    } 

                    echo '<tbody>'; 
                     foreach ($table['body'] as $tr) { 
                      echo '<tr>'; 
                       foreach ($tr as $td) { 
                        echo '<td>'.$td['c'].'</td>'; 
                       } 
                      echo '</tr>'; 
                     } 
                    echo '</tbody>'; 
                   echo '</table>'; 
                  } ?> 
                </div> 
                <?php if (the_field('fun_fact')) { ?> 
                <div class="fun-fact" style=""> 
                 <?php the_field('fun_fact'); ?> 
                </div> 
                <?php } ?> 
               </aside> 

               <div class="flexbox-1"> 
                <?php the_field('entry_text'); ?> 
               </div> 

              </div>       
             </div> 

             <div class="row carousel-wrapper"> 

              <div id="carousel-cw-<?php echo $entry_count; ?>" class="carousel slide" data-ride="carousel">       

               <div class="carousel-inner" role="listbox"> 

                <?php if (have_rows('slider')) : ?> 
                <?php $image_count = 0 ?> 
                <?php while (have_rows('slider')) : the_row(); ?> 
                <?php $image_count++; ?>  
                 <?php if (get_sub_field('image')) { ?> 
                  <div class="item <?php if ($image_count == 1) echo 'active' ?>"> 
                   <img src="<?php the_sub_field('image'); ?>" title=""> 
                   <figcaption><?php the_sub_field('caption'); ?></figcaption> 
                  </div> 
                 <?php } ?> 
                <?php endwhile; ?> 
               <?php else : ?> 
                <?php // no rows found ?> 
               <?php endif; ?> 

               <a class="left carousel-control" href="#carousel-cw-<?php echo $entry_count; ?>" role="button" data-slide="prev"> 
               <span class="fa fa-chevron-left glyphicon glyphicon-chevron-left" aria-hidden="true"></span> 
               <span class="sr-only">Previous</span> 
               </a> 
               <a class="right carousel-control" href="#carousel-cw-<?php echo $entry_count; ?>" role="button" data-slide="next"> 
               <span class="fa fa-chevron-right glyphicon glyphicon-chevron-right" aria-hidden="true"></span> 
               <span class="sr-only">Next</span> 
               </a> 
              </div> 
              <!--/carousel --> 

             </div> 
             </div> 
            </div> 

           </div> 

          </div> 
          <!-- /entry --> 



          <?php endif; ?> 
         <?php endwhile; ?> 
        </div> 
       <!--/accordian --> 
       <div class="terminator"></div> 
      </div> 
      <!--/cambridge winter college --> 



      <!-- oxford summer 1 --> 
      <div role="tabpanel" class="tab-pane" id="tab2"> 
       <!-- accordian --> 
        <div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true"> 

         <?php $entry_count = 0; ?> 
         <?php while (have_posts()) : the_post(); ?> 
          <?php if (in_category('oxford_summer_college_1')) : ?> 

           <?php $entry_count++; ?> 


           <!-- entry --> 
           <div class="entry"> 
            <div class="col-lg-3 date"> 
             <time class="cbp_tmtime"><span><?php the_field('day'); ?></span><br> <span><?php the_field('date'); ?><sup><?php the_field('suffix'); ?></sup> <?php the_field('month'); ?></span> </time> 
             <div class="cbp_tmicon"></div> 
            </div> 

            <div class="panel-heading panel-head col-lg-9"> 
             <a data-toggle="collapse" data-parent="#accordion" href="#collapse-os1-<?php echo $entry_count; ?>"> 
              View <?php the_field('day'); ?>'s journal entry 
             </a> 
            </div> 

            <div id="collapse-os1-<?php echo $entry_count; ?>" class="panel-collapse collapse in col-lg-12 pull-right"> 
             <div class="panel-body col-lg-9 pull-right"> 
             <div class="row"> 
              <div class="col-lg-12 entry-text"> 

               <aside class="col-lg-6 pull-right flexbox-2">  
                <div class="schedule" > 
                 <?php $table = get_field('schedule'); 
                  if ($table) { 
                   echo '<table>'; 
                    if ($table['header']) { 
                     echo '<thead><tr>'; 
                      echo ''; 
                       foreach ($table['header'] as $th) { 
                        echo '<th>'; 
                         echo $th['c']; 
                        echo '</th>'; 
                       } 
                      echo '</tr>'; 
                     echo '</thead>'; 
                    } 

                    echo '<tbody>'; 
                     foreach ($table['body'] as $tr) { 
                      echo '<tr>'; 
                       foreach ($tr as $td) { 
                        echo '<td>'.$td['c'].'</td>'; 
                       } 
                      echo '</tr>'; 
                     } 
                    echo '</tbody>'; 
                   echo '</table>'; 
                  } ?> 
                </div> 
                <div class="fun-fact" style=""> 
                 <?php the_field('fun_fact'); ?> 
                </div> 
               </aside> 

               <div class="flexbox-1"> 
                <?php the_field('entry_text'); ?> 
               </div> 

              </div>       
             </div> 

             <div class="row carousel-wrapper"> 

              <div id="carousel-os1-<?php echo $entry_count; ?>" class="carousel slide" data-ride="carousel">       

               <div class="carousel-inner" role="listbox"> 

                <?php if (have_rows('slider')) : ?> 
                <?php $image_count = 0 ?> 
                <?php while (have_rows('slider')) : the_row(); ?> 
                <?php $image_count++; ?>  
                 <?php if (get_sub_field('image')) { ?> 
                  <div class="item <?php if ($image_count == 1) echo 'active' ?>"> 
                   <img src="<?php the_sub_field('image'); ?>"> 
                   <figcaption><?php the_sub_field('caption'); ?></figcaption> 
                  </div> 
                 <?php } ?> 
                <?php endwhile; ?> 
               <?php else : ?> 
                <?php // no rows found ?> 
               <?php endif; ?> 

               <a class="left carousel-control" href="#carousel-os1-<?php echo $entry_count; ?>" role="button" data-slide="prev"> 
               <span class="fa fa-chevron-left glyphicon glyphicon-chevron-left" aria-hidden="true"></span> 
               <span class="sr-only">Previous</span> 
               </a> 
               <a class="right carousel-control" href="#carousel-os1-<?php echo $entry_count; ?>" role="button" data-slide="next"> 
               <span class="fa fa-chevron-right glyphicon glyphicon-chevron-right" aria-hidden="true"></span> 
               <span class="sr-only">Next</span> 
               </a> 
              </div> 
              <!--/carousel --> 

             </div> 
             </div> 
            </div> 

           <!-- </div> --> 

          </div> 
          <!-- /entry --> 



          <?php endif; ?> 
         <?php endwhile; ?> 
        </div> 
       <!--/accordian --> 
       <div class="terminator"></div> 
      </div> 
      <!--/oxford summer 1 --> 


      <!-- oxford summer college 2 --> 
      <div role="tabpanel" class="tab-pane" id="tab3"> 
       <!-- accordian --> 
        <div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true"> 
         <?php $entry_count = 0; ?> 
         <?php while (have_posts()) : the_post(); ?> 
          <?php if (in_category('oxford_summer_college_2')) : ?> 

           <?php $entry_count++; ?> 

           <!-- entry --> 
           <div class="entry"> 
            <div class="col-lg-3 date"> 
             <time class="cbp_tmtime"><span><?php the_field('day'); ?></span><br> <span><?php the_field('date'); ?><sup><?php the_field('suffix'); ?></sup> <?php the_field('month'); ?></span> </time> 
             <div class="cbp_tmicon"></div> 
            </div> 

            <div class="panel-heading panel-head col-lg-9"> 
             <a data-toggle="collapse" data-parent="#accordion" href="#collapse-os2-<?php echo $entry_count; ?>"> 
              View <?php the_field('day'); ?>'s journal entry 
             </a> 
            </div> 

            <div id="collapse-os2-<?php echo $entry_count; ?>" class="panel-collapse collapse in col-lg-12 pull-right"> 
             <div class="panel-body col-lg-9 pull-right"> 
             <div class="row"> 
              <div class="col-lg-12 entry-text"> 

               <aside class="col-lg-6 pull-right flexbox-2">  
                <div class="schedule" > 
                 <?php $table = get_field('schedule'); 
                  if ($table) { 
                   echo '<table>'; 
                    if ($table['header']) { 
                     echo '<thead><tr>'; 
                      echo ''; 
                       foreach ($table['header'] as $th) { 
                        echo '<th>'; 
                         echo $th['c']; 
                        echo '</th>'; 
                       } 
                      echo '</tr>'; 
                     echo '</thead>'; 
                    } 

                    echo '<tbody>'; 
                     foreach ($table['body'] as $tr) { 
                      echo '<tr>'; 
                       foreach ($tr as $td) { 
                        echo '<td>'.$td['c'].'</td>'; 
                       } 
                      echo '</tr>'; 
                     } 
                    echo '</tbody>'; 
                   echo '</table>'; 
                  } ?> 
                </div> 
                <div class="fun-fact" style=""> 
                 <?php the_field('fun_fact'); ?> 
                </div> 
               </aside> 

               <div class="flexbox-1"> 
                <?php the_field('entry_text'); ?> 
               </div> 

              </div>       
             </div> 

             <div class="row carousel-wrapper"> 

              <div id="carousel-os2-<?php echo $entry_count; ?>" class="carousel slide" data-ride="carousel">       

               <div class="carousel-inner" role="listbox"> 

                <?php if (have_rows('slider')) : ?> 
                <?php $image_count = 0 ?> 
                <?php while (have_rows('slider')) : the_row(); ?> 
                <?php $image_count++; ?>  
                 <?php if (get_sub_field('image')) { ?> 
                  <div class="item <?php if ($image_count == 1) echo 'active' ?>"> 
                   <img src="<?php the_sub_field('image'); ?>"> 
                   <figcaption><?php the_sub_field('caption'); ?></figcaption> 
                  </div> 
                 <?php } ?> 
                <?php endwhile; ?> 
               <?php else : ?> 
                <?php // no rows found ?> 
               <?php endif; ?> 

               <a class="left carousel-control" href="#carousel-os2-<?php echo $entry_count; ?>" role="button" data-slide="prev"> 
               <span class="fa fa-chevron-left glyphicon glyphicon-chevron-left" aria-hidden="true"></span> 
               <span class="sr-only">Previous</span> 
               </a> 
               <a class="right carousel-control" href="#carousel-os2-<?php echo $entry_count; ?>" role="button" data-slide="next"> 
               <span class="fa fa-chevron-right glyphicon glyphicon-chevron-right" aria-hidden="true"></span> 
               <span class="sr-only">Next</span> 
               </a> 
              </div> 
              <!--/carousel --> 

             </div> 
             </div> 
            </div> 

           </div> 

          </div> 
          <!-- /entry --> 



          <?php endif; ?> 
         <?php endwhile; ?> 
        </div> 
       <!--/accordian --> 
       <div class="terminator"></div> 
      </div> 
      <!--/oxford summer college 2 --> 

      <!-- cambridge summer college --> 
      <div role="tabpanel" class="tab-pane" id="tab4"> 
       <!-- accordian --> 
        <div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true"> 
         <?php $entry_count = 0; ?> 
         <?php while (have_posts()) : the_post(); ?> 
          <?php if (in_category('cambridge_summer_college')) : ?> 

           <?php $entry_count++; ?> 

           <!-- entry --> 
           <div class="entry"> 
            <div class="col-lg-3 date"> 
             <time class="cbp_tmtime"><span><?php the_field('day'); ?></span><br> <span><?php the_field('date'); ?><sup><?php the_field('suffix'); ?></sup> <?php the_field('month'); ?></span> </time> 
             <div class="cbp_tmicon"></div> 
            </div> 

            <div class="panel-heading panel-head col-lg-9"> 
             <a data-toggle="collapse" data-parent="#accordion" href="#collapse-cs-<?php echo $entry_count; ?>"> 
              View <?php the_field('day'); ?>'s journal entry 
             </a> 
            </div> 

            <div id="collapse-cs-<?php echo $entry_count; ?>" class="panel-collapse collapse in col-lg-12 pull-right"> 
             <div class="panel-body col-lg-9 pull-right"> 
             <div class="row"> 
              <div class="col-lg-12 entry-text"> 

               <aside class="col-lg-6 pull-right flexbox-2">  
                <div class="schedule" > 
                 <?php $table = get_field('schedule'); 
                  if ($table) { 
                   echo '<table>'; 
                    if ($table['header']) { 
                     echo '<thead><tr>'; 
                      echo ''; 
                       foreach ($table['header'] as $th) { 
                        echo '<th>'; 
                         echo $th['c']; 
                        echo '</th>'; 
                       } 
                      echo '</tr>'; 
                     echo '</thead>'; 
                    } 

                    echo '<tbody>'; 
                     foreach ($table['body'] as $tr) { 
                      echo '<tr>'; 
                       foreach ($tr as $td) { 
                        echo '<td>'.$td['c'].'</td>'; 
                       } 
                      echo '</tr>'; 
                     } 
                    echo '</tbody>'; 
                   echo '</table>'; 
                  } ?> 
                </div> 
                <div class="fun-fact" style=""> 
                 <?php the_field('fun_fact'); ?> 
                </div> 
               </aside> 

               <div class="flexbox-1"> 
                <?php the_field('entry_text'); ?> 
               </div> 

              </div>       
             </div> 

             <div class="row carousel-wrapper"> 

              <div id="carousel-cs-<?php echo $entry_count; ?>" class="carousel slide" data-ride="carousel">       

               <div class="carousel-inner" role="listbox"> 

                <?php if (have_rows('slider')) : ?> 
                <?php $image_count = 0 ?> 
                <?php while (have_rows('slider')) : the_row(); ?> 
                <?php $image_count++; ?>  
                 <?php if (get_sub_field('image')) { ?> 
                  <div class="item <?php if ($image_count == 1) echo 'active' ?>"> 
                   <img src="<?php the_sub_field('image'); ?>"> 
                   <figcaption><?php the_sub_field('caption'); ?></figcaption> 
                  </div> 
                 <?php } ?> 
                <?php endwhile; ?> 
               <?php else : ?> 
                <?php // no rows found ?> 
               <?php endif; ?> 

               <a class="left carousel-control" href="#carousel-cs-<?php echo $entry_count; ?>" role="button" data-slide="prev"> 
               <span class="fa fa-chevron-left glyphicon glyphicon-chevron-left" aria-hidden="true"></span> 
               <span class="sr-only">Previous</span> 
               </a> 
               <a class="right carousel-control" href="#carousel-cs-<?php echo $entry_count; ?>" role="button" data-slide="next"> 
               <span class="fa fa-chevron-right glyphicon glyphicon-chevron-right" aria-hidden="true"></span> 
               <span class="sr-only">Next</span> 
               </a> 
              </div> 
              <!--/carousel --> 

             </div> 
             </div> 
            </div> 

           </div> 

          </div> 
          <!-- /entry --> 



          <?php endif; ?> 
         <?php endwhile; ?> 
        </div> 
       <!--/accordian --> 
       <div class="terminator"></div> 
      </div> 
      <!-- /cambridge summer college --> 


    <?php endif; ?> 

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

很抱歉的長碼轉儲,但它基本上是相同的,複製的4倍。真的,我看不出這裏有什麼問題。任何建議將不勝感激。

+0

請分享的print_r的'結果(get_querried_object());' – BlueSuiter

+1

[創建if語句按類別從CPT在WordPress篩選職位]的可能的複製(http://stackoverflow.com/questions/43312949/create-if-statements-filter-posts-by-category-from-cpt-in-wordpress) –

+0

我在第二個選項卡之前放置了print_r。我得到這個: 致命錯誤:調用未定義函數get_querried_object() – vincentieo

回答

0

令人驚訝的簡單的解決方案。我的最高職位設置爲10.真是一個明顯的錯誤,我犯了幾次犯規。簡單地改變最大帖子做了訣竅,但看到我想有一個博客以及分頁,我添加了以下從CSS技巧,以啓用我的CPT的所有帖子。 Cpt是Journal。

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'); 

?>