在主循环上每两个POST之后添加div!为什么第一次发帖不会被计算在内?

时间:2014-05-08 作者:StenW

所以我想在家里每两个帖子后加一个div。php和我几乎遵循了找到的答案here 但对其进行了一点修改,以便与主题的其余部分配合使用。现在的问题是,在硬编码的第一个分区中,有三个岗位,而不是两个岗位。我认为问题在于如何统计帖子,但不是百分之百确定。如果我计算帖子的方式有什么问题或者问题出在其他地方,我很想得到一些指针。这是我的家。php

<?php get_template_part(\'templates/page\', \'header-home\'); ?>

<?php if (!have_posts()) : ?>
<div class="alert alert-warning">
<?php _e(\'Sorry, no results were found.\', \'roots\'); ?>
</div>
<?php get_search_form(); ?>
<?php endif; ?>

<div class="center-row"><!--not dynamic-->
<?php while (have_posts()) : the_post(); ?>
<?php get_template_part(\'templates/content\', get_post_format()); ?>
<?php if ( 0 !== $wp_query->current_post 
    && 0 == $wp_query->current_post%2
 ) {
    echo \'</div><div class="center-row">\';
 } ?>
<?php endwhile; ?>
</div><!--last row-->

<?php if ($wp_query->max_num_pages > 1) : ?>
<nav class="post-nav">
<ul class="pager">
  <li class="previous"><?php next_posts_link(__(\'&larr; Older posts\', \'roots\')); ?></li>
  <li class="next"><?php previous_posts_link(__(\'Newer posts &rarr;\', \'roots\')); ?></li>
</ul>
</nav>
<?php endif; ?>

1 个回复
SO网友:Howdy_McGee

第一篇帖子不会被计算在内,因为您在if语句中有以下内容:

0 !== $wp_query->current_post

根据The Codex on WP_Query:

(循环期间可用)Index 当前显示的帖子的。

作为数组的索引,数组总是从0开始作为第一项。因此,如果在if语句中包含这一点,则跳过了第一篇文章。要使其有效,您实际上必须对当前帖子索引加1,然后才能获得模数,否则它仍将跳过第一篇帖子:

( $wp_query->current_post + 1 ) % 2

希望这样行!

结束

相关推荐

本地化,转义句子中间的html元素

我正在尝试翻译我即将发布的新插件中的一些字符串。我有一个字符串设置如下: <?php _e(\'The image <em>MUST</em> be less than <strong>500 KB</strong> in size.\', CUSTOM_TEXT_DOMAIN); ?> 我该如何避开这些元素,使它们不包含在诗歌翻译中?谢谢