Добавляем классы для первых и последних записей в ряду.
Вариант 1: Глобально, в файле функций
Вставляем в файл functions.php. В данном примере разделение по 4 записи в ряду.
add_filter('post_class', 'dobavit_pervii_klass');
function dobavit_pervii_klass($klassi) {
global $wp_query;
if (!(($wp_query->current_post) % 4)):
$klassi[] = 'first';
elseif (!((1+$wp_query->current_post) % 4)):
$klassi[] = 'last';
endif;
return $klassi;
}
Вариант 2: Локально, в выводе записей
Данный код внедряем в шаблоне вывода записей.
<?php
if (have_posts()) :
$i = 1;
while (have_posts()) :
if ($i === 1) { $new_class = "first-post"; }
elseif ($i % 3 == 0) {$new_class = "last-post"; $i = 0; }
else { $new_class = ""; }
the_post();
?>
<div class="<?php $allClasses = get_post_class(); foreach ($allClasses as $class) { echo $class . " "; } ?> <?php echo $new_class; ?>" id="post-<?php the_ID(); ?>">
<a href="<?php the_permalink(); ?>">
<?php
if( has_post_thumbnail() )
{the_post_thumbnail('rectangle');}
else
{echo '<img src="'.get_template_directory_uri().'/images/img-default.jpg" />';}
?>
</a>
<div class="line-cont">
<h3 class="title-post"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
<div class="excerpt"><?php the_excerpt(); ?></div>
<?php if( get_the_tag_list()): ?><?php the_tags( '<small class="tag">', ' / ', '</small>' ); ?><?php endif; ?>
</div>
</div>
<?php
$i++;
endwhile;
endif;
?>
В самом цикле можно было бы просто делать ссылку на solus.php (отдельным файл с конструкцией отдельной записи), но так в нее не будет проходить переменная $new_class.
Есть альтернатива: выводить solus.php через include ( include(TEMPLATEPATH.»/solus.php»); ).
Для добавления нового класса к post_class я применил такую конструкцию
<div class="<?php $allClasses = get_post_class(); foreach ($allClasses as $class) { echo $class . " "; } ?> <?php echo $new_class; ?>" id="post-<?php the_ID(); ?>">
Система расстановки записей
В зависимости от шаблона или модуля записи могут выводится по разному: по одной в ряд, по 3 в ряд, по 4 и т.д.
Для того чтобы назначать кратность нужно сделать 2 вещи:
1. Изменить кратность в строке формирования цикла elseif ($i % 3 == 0) {$new_class = «last-post»; $i = 0; }
2. Глобально для разных шаблонов задавать класс кратности. В примере ниже для шаблона Результат поиска записям добавляется класс quaternion (по 4), т.к. в шаблоне нет сайтбара, для остальных шаблонов задается класс ternary (по 3).
add_filter('post_class', 'dobavit_fold_klass');
function dobavit_fold_klass($klassi) {
global $wp_query;
if (is_search()) : $klassi[] = 'quaternion';
else : $klassi[] = 'ternary';
endif;
return $klassi;
}
Для классов quaternion и ternary задаем соответствующие параметры ширины
.hentry {float: left; position: relative;}
.ternary {width: 32%; margin: 0 1% 30px 1%;}
.quaternion {width: 24%; margin: 0 0.515% 30px 0.515%;}
.first-post {margin-left: 0;}
.last-post {margin-right: 0;}
Есть еще один альтернативный вариант — сделать Нестандартный цикл wordpress.
Либо, если все блоки на одном фоне, использовать облегченный способ верстки.
[site-socialshare]
