我有一个带有4个引导选项卡的页面。每个选项卡都包含自定义的post类型的帖子,形成不同的类别。4个类别,4个标签。使用in_category()应该非常容易;但出于某种原因,我只能对第一个选项卡进行筛选。其余三个选项卡显示根本没有帖子。
关于我的方法,请参阅这个问题:Creating if statements to filter posts by category from cpt in wordpress
以下是存档-日志. the的代码,日志是我的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次。真的,我看不出这里出了什么问题。如有任何建议,将不胜感激。
发布于 2017-04-11 14:42:37
令人惊讶的简单解决方案。我的最大发球数设为10,这是一个明显的错误,我已经犯规好几次了。简单地改变最大的帖子是有技巧的,但由于我想有一个博客,以及分页,我添加了下面的css技巧,以启用我的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' );
?>https://stackoverflow.com/questions/43324052
复制相似问题