2016-06-06 3 views
0

Ich muss verschiedene Klassen für Repeater-Elemente basierend auf der Anzahl haben können. Mit anderen Worten, der erste Repeater benötigt class="single-item active" und alle anderen Repeater benötigen class="single-item not-visible move-right".Ändern der Repeater-Klasse basierend auf der Anzahl in erweiterten benutzerdefinierten Feldern

Das ist, was ich bisher habe:

<?php $count = 0; ?> 
     <?php if (have_rows('features')): while (have_rows('features')) : the_row(); ?> 
     <?php if(!$count): ?> 
     <li class="cd-single-item cd-active"></li> 
     <?php else: ?> 
     <li class="cd-single-item cd-not-visible cd-move-right"></li> 
     <?php $count++; endif; endwhile; endif; ?> 

Antwort

0

einfach einen boolean false nach der ersten Prüfung festgelegt:

$repeater = get_field('my_repeater_field'); 
$first = true; 
foreach ($repeater as $sub) { 
    $class = $first ? 'single-item active' : 'single-item not-visible move-right'; 

    // do whatever with $sub and $class here... 

    $first = false; 
} 
0

ist Ihr Code fast richtig, aber Sie Erhöhung nur $count Wenn (!$count) falsch ist und dies nie passiert, weil Sie nur $count erhöhen, wenn ... und so weiter.

Setzen Sie einfach Ihre $count++ nach der ersten endif. Ich schrieb es so um:

<?php 
    $count = 0; 
    if (have_rows('features')): 
     while (have_rows('features')) : the_row(); 
      if (! $count): ?> 
       <li class="cd-single-item cd-active"></li> 
      <?php else: ?> 
       <li class="cd-single-item cd-not-visible cd-move-right"></li> 
      <?php 
      endif; 
      $count++; 
     endwhile; 
    endif; 
?> 

Hoffe, dass dies hilft!