Применять другой класс для каждого элемента в foreach ()

извините за глупый вопрос, но я действительно потерян. Я хочу применить следующий CSS для четных элементов моего foreach.

CSS

.blogArticles a { float: left; max-width: 250px; width: 25%; color: #333; } .blogArticles a:nth-child(even) { margin: 30px 0 -30px 0; } 

PHP ОБНОВЛЕНО (я использовал snap.svg для рендеринга SVG)

 <section id="blogArticles" class="blogArticles clearfix"> <?php $page = (isset($_GET['paged'])) ? $_GET['paged'] : 1; $args = array( 'paged' => $paged, 'orderby' => 'id', 'order' => 'DESC', 'cat' => 50, 'posts_per_page' => 20, 'post_status' => 'publish', 'suppress_filters' => true ); $blogPosts = query_posts( $args ); if ( have_posts() ) : while ( have_posts() ) : the_post(); $categories = get_the_category(); $count = 0; if ($categories) { foreach($categories as $category) { $class = ($count%2 == 0) ? "even" : ""; ?> <a href="#" class="mix <?php echo $category->name; ?> <?php echo $class; ?>" target="_self" onclick="return false;" data-path-hover="m 0,0 0,100 c 24.580441,3.12569 55.897012,-8.199417 90,-8.199417 34.10299,0 65.41956,11.325107 90,8.199417 L 180,0 z"> <figure> <?php if ( has_post_thumbnail()) : // Check if Thumbnail exists ?> <?php the_post_thumbnail(); // Fullsize image for the single post ?> <?php endif; ?> <svg viewBox="0 0 180 320" preserveAspectRatio="none"><path d="m 0,0 0,171.14385 c 24.580441,15.47138 55.897012,24.75772 90,24.75772 34.10299,0 65.41956,-9.28634 90,-24.75772 L 180,0 0,0 z"/></svg> <figcaption> <h2><?php the_title(); ?></h2> <p class="label <?php echo $category->name; ?>"><?php echo $category->name; ?></p> <button>View</button> </figcaption> </figure> </a> <?php $count++; } } ?> <?php endwhile; ?> </section> <div id="pagination"> <?php html5wp_pagination(); ?> </div> 

function.php

 function html5wp_pagination() { global $wp_query; $big = 999999999; echo paginate_links(array( 'base' => str_replace($big, '%#%', get_pagenum_link($big)), 'format' => '?paged=%#%', 'current' => max(1, get_query_var('paged')), 'total' => $wp_query->max_num_pages )); } 

Проблема в том, что в foreach каждый напечатанный $class равен! Любой намек на то, где это моя ошибка? Заранее спасибо!


Если у вас есть проблемы, как и я, отображая предлагаемую функцию большой разбивки на страницы, вот код, который фиксируется для разбиения на страницы @Pieter Goosen

 <?php $count = 1; ?> <?php $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; $args = array('paged' => $paged,........); $blogPosts = new WP_Query( $args ); if ( $blogPosts->have_posts() ) : ....... while ( $blogPosts->have_posts() ) : $blogPosts->the_post(); ........ ........ ........ } ?> <?php $count = $count+1; ?> <?php endwhile; ?> <?php wp_reset_postdata(); ?> <div class="clear"></div> <?php custom_pagination($blogPosts->max_num_pages); ?> 

Во-первых, вы никогда не должны использовать query_posts для создания пользовательских запросов. Это не только мой акцент, но и код. Одна большая проблема с query_posts заключается в том, что многие обстоятельства, разбиение на страницы не удается

Примечание. Эта функция не предназначена для использования плагинами или темами. Как поясняется ниже, есть более эффективные, более эффективные варианты для изменения основного запроса. query_posts () является слишком упрощенным и проблематичным способом изменения основного запроса страницы путем замены его новым экземпляром запроса. Он неэффективен (повторно запускает SQL-запросы), и в некоторых случаях он будет неудачным (особенно часто при работе с разбивкой по страницам).

Просто обратите внимание, что ваш параметр next_posts_link $max_pages должен быть настроен для пользовательских запросов, иначе он не удастся

Вы всегда должны создавать пользовательские запросы с помощью WP_Query . Поэтому ваш пользовательский запрос должен выглядеть так:

 $paged = ( get_query_var('paged') ) ? get_query_var('paged') : 1; $args = array( 'paged' => $paged, 'orderby' => 'ID', 'order' => 'DESC', 'cat' => 50, 'posts_per_page' => 20, 'post_status' => 'publish', 'suppress_filters' => true ); $blogPosts = new WP_Query( $args ); if ( $blogPosts->have_posts() ) : while ( $blogPosts->have_posts() ) : $blogPosts->the_post(); <----YOUR LOOP----> endwhile; // next_posts_link() usage with max_num_pages next_posts_link( 'Older Entries', $blogPosts->max_num_pages ); previous_posts_link( 'Newer Entries' ); wp_reset_postdata(); endif; 

Наконец, ваш счетчик должен начинаться вне цикла, а не внутри

 if ( $blogPosts->have_posts() ) : $count = 0; while ( $blogPosts->have_posts() ) : $blogPosts->the_post(); 

РЕДАКТИРОВАТЬ

Пользовательская функция разбиения на страницы. Я не знаю, кто является оригинальным автором этой функции, но спасибо вам, если вы когда-нибудь найдете этот ответ 🙂

 function custom_pagination($pages = '', $range = 2) { $showitems = ($range * 2)+1; global $paged; if(empty($paged)) $paged = 1; if($pages == '') { global $wp_query; $pages = $wp_query->max_num_pages; if(!$pages) { $pages = 1; } } if(1 != $pages) { $string = _x( 'Page %1$s of %2$s' , '%1$s = current page, %2$s = all pages' , 'pietergoosen' ); echo "<div class='pagination'><span>" . sprintf( $string, $paged, $pages ) . "</span>"; if($paged > 2 && $paged > $range+1 && $showitems < $pages) echo "<a href='".get_pagenum_link(1)."'>" . __( '&laquo; First', 'pietergoosen' ) . "</a>"; if($paged > 1 && $showitems < $pages) echo "<a href='".get_pagenum_link($paged - 1)."'>" . __( '&lsaquo; Previous', 'pietergoosen' ) . "</a>"; for ($i=1; $i <= $pages; $i++) { if (1 != $pages &&( !($i >= $paged+$range+1 || $i <= $paged-$range-1) || $pages <= $showitems )) { echo ($paged == $i)? "<span class=\"current\">".$i."</span>":"<a href='".get_pagenum_link($i)."' class=\"inactive\">".$i."</a>"; } } if ($paged < $pages && $showitems < $pages) echo "<a href='" . get_pagenum_link($paged + 1)."'>" . __( 'Next &rsaquo;', 'pietergoosen' ) . "</a>"; if ($paged < $pages-1 && $paged+$range-1 < $pages && $showitems < $pages) echo "<a href='".get_pagenum_link($pages)."'>" . __( 'Last &raquo;', 'pietergoosen' ) . "</a>"; echo "</div>\n"; } } // 

Чтобы устранить проблему, я просто удалил $count = 0 перед foreach() и:

 if ($categories) { foreach($categories as $category) { if(!isset($count)) $count = 0;