2012-10-02 42 views
7

Tengo un bucle de Wordpress de la siguiente manera:¿Cómo agrego una clase para cada elemento enésimo en un bucle php (wordpress)

<?php $loop = new WP_Query(array('post_type' => 'portfolio')); ?> 
    <?php while ($loop->have_posts()) : $loop->the_post(); ?> 
    <div class="four columns"> 
     <?php the_content(); //along with other stuff in looped div ?> 
    </div> 
<?php endwhile ?> 

¿Cómo puedo agregar una clase de 'alfa' a todos los (4n-3) th div (div.four.columns) y una clase 'omega' para cada elemento (4n) th usando php?

Gracias (mucho!), Jamie

+7

Mantenga un contador, a partir de 0, y se incrementa en 1 cada bucle. Entonces, si 'contador% 3 == 0' entonces es" cada 3º ciclo ". Del mismo modo, 'contador% 4 == 0' para" cada 4º bucle ". Haga matemática extra según sea necesario. –

Respuesta

23

Por qué no añadir un contador y utilizar el enfoque módulo de conocer en cada columna de qué elemento se están haciendo eco de la actualidad.

Digamos que tiene 4 columnas como se especifica.
Se empieza con contador = 1
1% 4 = 1 (que está en el primer elemento)
2% 4 = 2 (se encuentra en el segundo elemento)
3% 4 = 3 (que está en el tercer elemento)
4% 4 = 0 (se encuentra en el cuarto elemento)
5% 4 = 1 (que está en el primer elemento)
6% 4 = 2 (se encuentra en el segundo elemento)

Y solo utiliza una declaración If con la clase como sigue

<?php $counter = 1 ?> 
<?php $loop = new WP_Query(array('post_type' => 'portfolio')); ?> 
    <?php while ($loop->have_posts()) : $loop->the_post(); ?> 
    <div class="four columns <?php if ($counter % 4 == 1){echo 'alpha'}else if ($counter % 4 == 0){echo 'omega'} ?>"> 
     <?php the_content(); //along with other stuff in looped div ?> 
    </div> 
<?php $counter++ ; 
endwhile ?> 
1

Aplicación de los comentarios hechos:

<?php $loop = new WP_Query(array('post_type' => 'portfolio')); ?> 
    <?php 
     $i = 0; 
     while ($loop->have_posts()) : $loop->the_post(); 
      if($i % 4 == 0) 
      $class = 'omega'; 
      else 
      $class = ''; 
     ?> 
    <div class="four columns <?php echo $class ?>"> 
     <?php 
      the_content(); // Along with other stuff in looped div 
      $i++; 
     ?> 
    </div> 
<?php endwhile ?> 
+0

Pero no está reiniciando '$ class' en cada ciclo. Una vez que '$ class = 'omega';' ocurre, '$ class' siempre será' omega'. '$ class = '';' debe estar dentro del ciclo while. –

+1

tienes razón :) – JvdBerg

Cuestiones relacionadas