2014-09-03 123 views
0

这是一个wordpress项目,但更真实的PHP。我正在执行一个查询,以最多带回12个帖子。每套三个职位都包装在一个名为jobsN的分区中。该div内的每个帖子(item)都会以item1,item2item3的形式返回。通过计数迭代PHP显示不正确的序列

item1类工作得很好,但jobs类不会回到1-2-3-4。它回来为1-0-0-0。我无法弄清楚我的数字出了什么问题。

正如您从下面的HTML中可以看到的,作业计数有些不同。这部分是在这里处理:

<?php if ($count == 3) {?></div><?php $count = 0; ?><div class="jobs 
<?php echo $count; ?>"><?php }; ?> 

下面是完整的查询:

<?php 
      query_posts(array( 
       'post_type' => 'custom_job', 
       'showposts' => 12 
      )); 
     ?> 

     <?php if (have_posts()): $contcount = 0; $count = 0;?> 
     <?php $contcount++; ?> 
     <div class="jobs<?php echo $contcount; ?>"> 
     <?php while (have_posts()) : the_post(); $count++;?> 
      <div class="item-<?php echo $count ?>"> 
       <h2><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h2> 
       <p><?php echo get_the_excerpt(); ?></p> 
       <a href="<?php the_permalink() ?>">Learn more</a> --> 
      </div> 
      <?php if ($count == 3) {?></div><?php $count = 0; ?><div class="jobs<?php echo $count; ?>"><?php }; ?> 
     <?php endwhile; ?> 
     </div> 
     <?php endif; ?> 

下面是HTML,我回去:

<div class="jobs1"> 
     <div class="item-1"> 
      content 
     </div> 
     <div class="item-2"> 
      content 
     </div> 
     <div class="item-3"> 
      content 
     </div> 
</div> 
<div class="jobs0"> 
     <div class="item-1"> 
      content 
     </div> 
     <div class="item-2"> 
      content 
     </div> 
     <div class="item-3"> 
      content 
     </div> 
    </div> 
<div class="jobs0"> 
     <div class="item-1"> 
      content 
     </div> 
     <div class="item-2"> 
      content 
     </div> 
     <div class="item-3"> 
      content 
     </div> 
</div> 
<div class="jobs0"> 
     <div class="item-1"> 
      content 
     </div> 
</div 
+0

切勿使用'query_posts'。这是不可靠的,打破主要查询,并在大多数情况下彻底失败,当涉及到分页。而是使用'WP_Query' – 2014-09-03 09:41:50

回答

1

此行的块的问题是:

<?php if ($count == 3) {?></div><?php $count = 0; ?><div class="jobs<?php echo $count; ?>"><?php }; ?> 

如果$计数= 3这意味着你将desplay一个新的工作div,但你也使$ count = 0,那么你回应它为0.

变换这行:

<?php if ($count == 3) {?></div><?php $count = 0; $countcount++; ?><div class="jobs<?php echo $countcount; ?>"><?php }; ?> 
+1

虽然变量是contcount,但不是countcount,但它可以工作。所以一旦我改变它的工作:) – user1486133 2014-09-03 09:10:22

+0

对,对不起,感谢接受。 – 2014-09-03 09:13:22

1

使用此行

<?php if ($count == 3) {?></div><?php $count = 0; $contcount++; ?><div class="jobs<?php echo $contcount; ?>"><?php }; ?>

代替

<?php if ($count == 3) {?></div><?php $count = 0; ?><div class="jobs<?php echo $count; ?>"><?php }; ?>

解决方案:

我已经更新了$contcount++$count==3和回声类jobs<?php echo $contcount

+0

如果您在输出之前增加$ contcount,那么您将在第二个块中获得3而不是2 – Chococroc 2014-09-03 08:47:57

+0

第一次在外部使用时,2将在下面使用,请参阅上文。在什么时候它必须被回声再次看到一个 – 2014-09-03 08:48:54

+0

哇,对不起,我错了,:P。我更正了我的答案... – Chococroc 2014-09-03 08:51:27

0

你使用了错误计数器在PHP中使用:

您的代码包含以下行:

<?php if ($count == 3) {?></div><?php $count = 0; ?><div class="jobs<?php echo $count; ?>"><?php }; ?> 

它应该是

<?php if ($count == 3) { ?></div><?php $count = 0; $contcount++; ?><div class="jobs<?php echo $contcount; ?>"><?php }; ?> 

因为$count存储项目,$contcount商店物品

+0

再次看到$ contcount的1的值问题在while循环之外使用,您的代码将在启动时放置1-1两次 – 2014-09-03 08:50:57

+0

这条线上的关闭}似乎存在问题。 – user1486133 2014-09-03 08:55:22

+0

解决了,我忘了添加';'在$ countcount的末尾。检查修正的代码行 – Chococroc 2014-09-03 10:08:10

0

尝试用这个,不是100%肯定它会工作

<?php 
    query_posts(array( 
     'post_type' => 'custom_job', 
     'showposts' => 12 
    )); 
?> 

<?php if (have_posts()): $contcount = 0; $count = 0;?> 
<?php $contcount++; ?> 
    <div class="jobs<?php echo $contcount; ?>"> 
     <?php while (have_posts()) : the_post(); $count++;?> 
      <div class="item-<?php echo $count ?>"> 
       <h2><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h2> 
       <p><?php echo get_the_excerpt(); ?></p> 
       <a href="<?php the_permalink() ?>">Learn more</a> 
      </div> 
      <?php if ($count == 3): ?> 
       <?php $count = 0; $countcount++;?> 
       <div class="jobs<?php echo $contcount; ?>"></div> 
      <?php endif; ?> 
     <?php endwhile; ?> 
    </div> 
<?php endif; ?> 

编辑:编辑可能的错误。

+0

第一个“endif”语法错误,意外的'endif'(T_ENDIF) – user1486133 2014-09-03 09:07:48