web-dev-qa-db-fra.com

Mise en grille "dernière" classe à chaque troisième élément

Cela semble être un problème trivial mais je n'arrive pas à le faire fonctionner. Je dois ajouter class="last" à chaque troisième message.

Voici mon code:

  <?php
     $count = 0;
     $my_query = new WP_Query('cat=-18,-7&showposts=9');
     while ($my_query->have_posts()) : $my_query->the_post();
    ?>

    <article class="<?php if ($count % 3 == 0) { echo "last "; }" ?>> </article>

    <?php 
          $count++;
          endwhile; 
    ?>
2
Eeyore

Je pense que vous avez juste besoin de démarrer la variable $count à partir de 1 et non à zéro. Sinon, vous obtiendrez l'effet opposé, car 0 modulo 3 est 0. Le premier élément de chaque 3 recevra le nom de la classe.

1
sanchothefat

Je ne suis pas sûr de savoir ce dont vous avez besoin ici, il est habituel de garder une trace des valeurs paires/impaires. Vous avez simplement besoin de tous les trois.

$i = 0;

//while stuff
    $i++;
    if( 3 == $i ) {
        $i = 0;
        echo 'last';
    }
1
Rarst

commencer le compte à partir de 1

post number count value %value
1                1          1
2                2          2
3                3          0
1
Satish Gandham

J'ai trouvé cela à la recherche d'un moyen de faire de même avec le thème de base WordPress, "Bones". Il a également une "première" classe. Je poste cela ici au cas où cela pourrait aider quelqu'un d'autre.

<div class="wrap clearfix">
<?php 
$count = 1;
$categories = get_categories($args);
foreach ($categories as $cat) { ?>
    <article class="
        <?php 
            //echo $count.' ';
            if ($count % 3 == 0) {echo 'last ';} 
            if ($count == 1 || $count % 3 == 1) {echo 'first ';}
        ?>fourcol"> 
        <h4><?php echo $cat->cat_name ?></h4>
        <div class="desc"><?php echo $cat->category_description ?></div>
    </article>
<?php $count++;} ?>
0
dwcouch