迭代计数的PHP显示错误的序列

时间:2014-09-03 08:36:57

标签: php wordpress iteration

这是一个wordpress项目,但真的是PHP。我正在执行查询以返回最多12个帖子。每组三个帖子都包含在一个名为jobsN的div中。该div中的每个帖子(项目)都会以item1item2item3的形式返回。

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

4 个答案:

答案 0 :(得分: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并在echo class jobs<?php echo $contcount中使用

答案 1 :(得分:1)

这一行是问题所在:

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

如果$ count = 3,则意味着您将显示一个新的作业div,但是你也将$ count = 0,然后你将它回显为0。

将此行转换为:

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

答案 2 :(得分: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存储了项目块

答案 3 :(得分: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; ?>

编辑:编辑可能的错误。