Добавить класс в другие сообщения, используя get_posts

В настоящее время я использую этот маленький цикл для отображения списка сообщений с использованием типа пользовательских сообщений «события»

<?php global $post; // required $args = array('post_type' => 'events'); $custom_posts = get_posts($args); foreach($custom_posts as $post) : setup_postdata($post); ?> <ul><li class="post">Content goes here</li></ul> <?php endforeach; ?> 

То, что я хочу сделать, это добавить класс к любому другому элементу списка, чтобы я мог их альтернативно стилизовать (один белый, один черный, один белый, один черный, например)

Я делал это раньше со стандартным циклом, но я просто перехожу к get_posts, поэтому я немного застрял.

Любая помощь будет большой.

заранее спасибо

Простым решением было бы добавить чередующийся класс ко всем другим сообщениям в списке. В частности, (в вашем стиле style.css) стилисты элементы списка <li> одним способом, а затем переопределяют этот стиль для элементов списка определенного класса <li class='my-alternate-class'> . Класс my-alternate-cass будет применяться к любому другому элементу списка:

 <?php global $post; $args = array('post_type' => 'events'); $custom_posts = get_posts($args); if($custom_posts):?> <ul>; <?php foreach($custom_posts as $post) : setup_postdata($post);?> <?php $class = (empty($class) ? "class='my-alternate-class'" : "");?> <li <?php echo $class;?>>Content goes here</li> </ul>; <?php endforeach; ?> <?php endif; ?> //Remember to wp_reset_postdata() afterwards wp_reset_postdata(); ?> 

Обратите внимание, что это не проверено.

Я также добавил wp_reset_postdata() как иначе ваш сайт может сломаться.

Я знаю решение CSS3:

 li {background: #000;} li:nth-child(odd) {background: #fff;} 

То же самое можно сделать с помощью jQuery, где #eventlist – это идентификатор вашего неупорядоченного списка:

 jQuery(document).ready(function(){ jQuery('#eventlist li:nth-child(odd)').addClass('alternate'); }); 

А затем: .alternate {background: #fff;}

 $counter = 0; // Reset counter before the loop $thenumber = ( $counter%2 ) + 1; // Set counter reset (every 2nd count in this example) $counter++; // Increment number echo $thenumber; // Echoes 1, 2, 1, 2, 1, 2 and so on... 

Это можно использовать следующим образом:

 <li class="post postCount<?php echo $thenumber; ?>">Content goes here</li> 

так что вы получите

 <li class="post postCount1"></li> <li class="post postCount2"></li> <li class="post postCount1"></li> 

Надеюсь, это сработает!

(кстати, вам может понадобиться переместить теги <ul> вне цикла, так что у вас есть только один список, в котором элементы списка зацикливаются внутри)