在wordPress主题开发中,have_post()是必须经常用到的循环,然而它的循环次数只能在后台设置->阅读页面进行修改.对于不懂代码的站长想要在一些特定情况下使用have_post()又不想受后台设置中的限制,就是个难题了.以下是小编在网上搜集到的方法,及自己在开发主题过程中使用的,给自己一个记录,给大家一份帮助.
1.正常的用法
<?php if (have_posts()) : ?> <?php while (have_posts()) : the_post(); ?> <!–PHP代码 –> <?php endwhile; ?> <?php endif; ?>
2.自定义循环次数的用法
<?php $args = array('cat' =>'-5' , //这里数组的用法可以看wp-query的详细解析 'posts_per_page' =>'7' ,); $the_query = new WP_Query( $args); if ( $the_query->have_posts() ) { while ( $the_query->have_posts() ) { $the_query->the_post();?> <div class="item"> <figure class="pull-left"><img style="width: 67px;height: 45px;" src="<?php echo catch_that_image() ?>" alt="<?php the_title()?>" /></figure> <div class="pull-right content"> <h4><a href="<?php the_permalink() ?>" title="<?php the_title()?>"> <?php the_title()?></a> </h4> <p class="meta"> <?php the_title()?></p> </div> </div> <?php } } else { echo "no result"; }wp_reset_postdata();?>
- 3用get_post和get_category()代替
-
<?php $posts1 = get_posts("category=14&numberposts=8"); $query_index = 0; ?> <?php if ($posts1) : ?> <?php foreach ($posts1 as $post) : $query_index++; setup_postdata($post); ?> <li> //这里写你自己要循环的html代码 </li> <?php endforeach; ?> <?php endif; ?>
<?php $display_categories = array(2); foreach ($display_categories as $category) { ?> <?php query_posts("showposts=8&cat=$category")?> <?php while (have_posts()) : the_post(); ?> <div class="span12 post no-margin-left "> //这里写你自己要循环的html代码 </div> <?php endwhile; ?> <?php } wp_reset_query();?>
4.相关的设置每次循环输出不同信息
让第一篇文章显示摘要,而余下的显示标题--代码: <?php if (have_posts()) :$ashu_i=0;?> <!--检查是否有文章,并定义计数变量初始值为0 --> <?php while (have_posts()) : the_post();$ashu_i++;?> <!-- 开始循环,第一次循环$sahu_i为1,第二次为2,依次。。 --> <?php if($ashu_i==1){?> <!-- 如果是第一篇文章 --> <?php the_content();}else{?> <!-- 显示内容 --> <?php the_title();}?> <!-- 如果不是第一篇显示标题 --> <?php endwhile; ?> <!-- 一次while循环结束 --> <?php else : ?> <!--如果没有文章--> 此处显示未找到文章时的信息,比如404相关 <?php endif; ?> <!--if结束 -->
5.默认主题使用方法
<main id="main" class="site-main" role="main">
<?php
while ( have_posts() ) : the_post();
get_template_part( 'template-parts/page/content', 'page' );
// If comments are open or we have at least one comment, load up the comment template.
if ( comments_open() || get_comments_number() ) :
comments_template();
endif;
endwhile; // End of the loop.
?>
</main><!-- #main -->