WordPress: добавим чередование классов к записям

Постановка задачи или предисловие

Представим ситуацию. Иногда, исходя из особенностей HMTL-верстки и соответственно дизайна темы оформления вам может понадобиться добавить произвольные CSS классы к записям в зависимости от их порядкового номера на странице. К примеру всем четным записям необходимо выставить 'two', а нечетным соответсвенно 'two'. Это учитывая одну отдельно взятую страницу.

Пример фрагмента кода

Для наглядности я использую одну из стандартных тем оформления, именуемую, как TwentyEleven.

<?php
/**
 * Реализация функции. Самое интересное в трех крайних строчках после закрывающей фигурной скобки.
 **/
function twentyeleven_onetwo_post_class( $classes ) {
  global $current_class;
  $classes[] = $current_class;
  if ( $current_class == 'one' ) : 
     $current_class = 'two'; 
  else : 
     $current_class = 'one';
  endif;
  return $classes;
}
add_filter ( 'post_class' , 'twentyeleven_onetwo_post_class' ); // Ставим соответсвующий хук.
global $current_class; // Объявление глобальной переменной необходимо для запоминания номера постового.
$current_class = 'one'; // С какого класса начать "отсчет".
?>

А теперь примечание к применению. В силу того, что фильтр ставится на системную функцию post_class() в цикле показа постовых сайта должен присутсвовать её непосредственный вызов. к примеру, как у той же Twenty Eleven:

...
<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
...
</article>
...

Куда добавить данную фишку? Как всегда в файлик под названием "functions.php".

Результат работы примера

WordPress записи: post_class





© 2012-2014 Druweb.ru. Вы можете спокойно копировать любые материалы сайта только при наличии обратной ссылки.