我的目标是在每四个帖子后打印一些额外的HTML。
以下代码有什么问题
<?php while ( have_posts() ) : the_post(); ?>
<?php wc_get_template_part( 'content', 'product' ); ?>
<?php
$posts = $wp_query->post_count;
if ( $posts == 4 ) {
echo '<div class="clearfix"></div>';
}
?>
<?php endwhile; // end of the loop. ?>
答案 0 :(得分:6)
使用The Loop的基本代码,您可以包含一个计数器,在每次迭代时递增计数器并检查其零模块是否为四。
<?php if ( have_posts() ) : $count = 1; ?>
<?php while ( have_posts() ) : the_post();?>
<!-- do stuff ... -->
<?php if ( $count % 4 == 0 ): ?>
<!-- extra stuff every four posts -->
<?php endif; ?>
<?php $count++; endwhile; ?>
<?php endif; ?>
答案 1 :(得分:4)
我知道这个问题已经得到解答,但我认为有更简洁的方法可以做到这一点。
您可以使用WP_Query对象中的几个有用属性,而不必添加自定义增量器。
<?php
// Do not forget this part, required if you do not define a custom WP_Query
global $wp_query;
// Below you can find some useful properties in the WP_Query object
// Use them to their full potential
// Gets filled with the requested posts from the database.
echo $wp_query->posts;
// The number of posts being displayed.
echo $wp_query->post_count;
// The total number of posts found matching the current query parameters
echo $wp_query->found_posts;
// The total number of pages. Is the result of $found_posts / $posts_per_page
echo $wp_query->max_num_pages;
// Index of the post currently being displayed. (Can only be used within the loop)
while( have_posts() ) : the_post();
echo $wp_query->current_post;
endwhile;
使用$ current_post属性时,你的循环看起来像这样。
<?php global $wp_query; ?>
<?php while ( have_posts() ) : the_post(); ?>
<?php wc_get_template_part( 'content', 'product' ); ?>
<?php
if ( ( $wp_query->current_post + 1 ) % 4 === 0 ) {
echo '<div class="clearfix"></div>';
}
?>
<?php endwhile; // end of the loop. ?>
我认为这是一个很好的清洁解决方案。
在此处阅读有关WP_Query对象的更多信息: https://codex.wordpress.org/Class_Reference/WP_Query
答案 2 :(得分:2)
试试这个
<?php
$count = 1;
while ( have_posts() ) : the_post();
wc_get_template_part( 'content', 'product' );
if ( $count%4==0 ) {
echo '<div class="clearfix"></div>';
}
$count++;
endwhile; ?>
答案 3 :(得分:0)
我的答案之前可能有一个错误:它在每四个帖子的末尾回应“结束”标签 - 但是如果帖子数是5?(或任何其他数字)不能被4整除?当然,解决这个问题的需求可能因HTML而异。)
用5:
来看这个例子 - 后1--
- 后缀2--
- 后3 -
- 后4 -
- 关闭标签 -
- 后缀5--
??????
您可以看到在第5个帖子之后,循环未使用结束标记关闭。
因此我建议使用此代码(该帖子的数量或帐号中的posts_per_page数量):
<?php
// taking @Jordi Nebot's code from his answer - thank you
if ( have_posts() ) : $count = 1;
?>
<?php while ( have_posts() ) : the_post();?>
<!-- do stuff ... -->
<?php
// the conditions in the if are triggered after every 4th post
// OR if all the posts have been echoed OR all the posts for
// this page have been echoed
if ( $count % 4 == 0 || $wp_query->found_posts == $count || $wp_query->posts_per_page == $count ):
?>
<!-- extra stuff every four posts -->
<?php endif; ?>
<?php $count++; endwhile; ?>
<?php endif; ?>