Время чтения: 4 мин. 12 сентября 2015 в 9:00 Блог веб-разработчика
Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5
Загрузка...

Вывод постов в несколько колонок

Пример 1 — что получим на выходе:

2015-09-08_143751

Пример 2 — что получим на выходе:

2015-09-08_143837

Как 1 так и 2 способы делается с помощью функции:

[php]
<div class="main">
<?php
$counter = 1; //start counter
$grids = 3; //Grids per row
global $query_string; //Need this to make pagination work
if (have_posts()) : while (have_posts()) : the_post();
if( $counter == $grids ) :
$counter = 0; // Reset counter ?>

<div class="col-3 mybock">
<?php else: ?>
<div class="col-3 mybock">
<?php endif; ?>

<div class="archiveimg">
<a href="<?php the_permalink() ?>" title="<?php the_title(); ?>"><img src="<?php echo first_post_image() ?>" alt="<?php the_title(); ?>" /></a>
<div class="post-title"><h3><a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></h3></div>
</div>

<div class="clear" style="margin: 20px 0;"></div>
</div>

<?php
$counter++;
endwhile;
//Pagination can go here if you want it.

endif;
wp_reset_postdata(); // Reset post_data after each loop
?>

</div>

</div>

[/php]

Код ниже добавляем в файл functions.php. Он берет первую картинку с поста и делаем её миниатюрой.

[php]
//Вывод первой картинки с поста
function first_post_image() {
global $post, $posts;
$first_img = »;
ob_start();
ob_end_clean();
$output = preg_match_all(‘/<img.+src=[\’"]([^\’"]+)[\’"].*>/i’, $post->post_content, $matches);
$first_img = $matches [1] [0];
if(empty($first_img)){
$first_img = "/wp-content/themes/hypershot/images/demo-content.jpg";
// укажите путь к изображению, которое будет выводится по умолчанию.
}
return $first_img;
}

[/php]

В графе — $grids = 3; //Grids per row — указываем нужное число колонок.
В графе — col-3 — указываем класс, с помощью которого мы и делаем колонки. Прописывал так:

[php]

.col-3 {
width: 32.33%;
float: left;
margin-right: 1%;
}
.col-3:last-child {
margin-right:0%;
width: 33.33%;
}

[/php]

В графе — mybock — прописан класс, который отвечает за выравнивание постов по высоте. Дополнительно требуется подключение скриптов (jquery подключайте если не подключен ):

Стандартный код

[php]

<div id="gridcontainer">
<?php
$counter = 1; //start counter

$grids = 2; //Grids per row

global $query_string; //Need this to make pagination work

/*Setting up our custom query (In here we are setting it to show 12 posts per page and eliminate all sticky posts) */
query_posts($query_string . ‘&caller_get_posts=1&posts_per_page=12’);

if(have_posts()) : while(have_posts()) : the_post();
?>
<?php
//Show the left hand side column
if($counter == 1) :
?>
<div class="griditemleft">
<div class="postimage">
<a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"><?php the_post_thumbnail(‘category-thumbnail’); ?></a>
</div>
<h2><a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>
</div>
<?php
//Show the right hand side column
elseif($counter == $grids) :
?>
<div class="griditemright">
<div class="postimage">
<a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"><?php the_post_thumbnail(‘category-thumbnail’); ?></a>
</div>
<h2><a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>
</div>
<div class="clear"></div>
<?php
$counter = 0;
endif;
?>
<?php
$counter++;
endwhile;
//Pagination can go here if you want it.
endif;
?>
</div>

[/php]

Исходный код будет выглядеть так:

[php]

<div id="gridcontainer">
<div class="griditemleft">
<div class="postimage"> Post Image</div>
<h2>Post Title</h2>
</div>
<div class="griditemright">
<div class="postimage"> Post Image</div>
<h2>Post Title</h2>
</div>
<div class="clear"></div>
</div>

[/php]

Стили к стандартному коду:

[php]

#gridcontainer{margin: 20px 0; width: 100%; }
#gridcontainer h2 a{color: #77787a; font-size: 13px;}
#gridcontainer .griditemleft{float: left; width: 278px; margin: 0 40px 40px 0;}
#gridcontainer .griditemright{float: left; width: 278px;}
#gridcontainer .postimage{margin: 0 0 10px 0;}

[/php]

[php]

<!— jQuery library (served from Google) —>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>

<!— Скрипт отвечает за выравнивание постов по высоте —>

<script>
/* Thanks to CSS Tricks for pointing out this bit of jQuery

Equal Height Blocks in Rows


It’s been modified into a function called at page load and then each time the page is resized. One large modification was to remove the set height before each new calculation. */

equalheight = function(container){

var currentTallest = 0,
currentRowStart = 0,
rowDivs = new Array(),
$el,
topPosition = 0;
$(container).each(function() {

$el = $(this);
$($el).height(‘auto’)
topPostion = $el.position().top;

if (currentRowStart != topPostion) {
for (currentDiv = 0 ; currentDiv < rowDivs.length ; currentDiv++) {
rowDivs[currentDiv].height(currentTallest);
}
rowDivs.length = 0; // empty the array
currentRowStart = topPostion;
currentTallest = $el.height();
rowDivs.push($el);
} else {
rowDivs.push($el);
currentTallest = (currentTallest < $el.height()) ? ($el.height()) : (currentTallest);
}
for (currentDiv = 0 ; currentDiv < rowDivs.length ; currentDiv++) {
rowDivs[currentDiv].height(currentTallest);
}
});
}

$(window).load(function() {
equalheight(‘.main .mybock’);
});

$(window).resize(function(){
equalheight(‘.main .mybock’);
});

</script>

[/php]

В графе main — указан стиль, внутри которого будет ровнять блоки по высоте.

Выводим посты из произвольных таксономий

[php]

<?php
$args = array(
‘tax_query’ => array(
array(
‘taxonomy’ => ‘products-category’,
‘field’ => ‘slug’,
‘terms’ => array( ‘katalog’ )
),
),
‘post_type’ => ‘products’
);
?>

[/php]

Где — katalog — название произвольной рубрики в новой таксономии.
А — products-category — название таксономии

2015-09-08_144823

Похожие статьи

Давайте знакомиться!
Я в социальных сетях, добавляйтесь!
Получить коммерческое предложение

Я свяжусь с Вами в течении 10 минут и отвечу на все Ваши вопросы.

Введите ваше имя *

Введите контактный телефон *

Введите контактный e-mail *

Какая услуга Вас интересует? *

Допонительные услуги

Комментарий

Получить коммерческое предложение

Я свяжусь с Вами в течении 10 минут и отвечу на все Ваши вопросы.

Введите ваше имя *

Введите контактный телефон *

Введите контактный e-mail *

Какая услуга Вас интересует? *

Допонительные услуги

Комментарий

Получить консультацию

Я свяжусь с Вами в течении 10 минут и отвечу на все Ваши вопросы.

Введите ваше имя *

Введите контактный телефон *

Введите контактный e-mail *

Комментарий

Получить консультацию

Я свяжусь с Вами в течении 10 минут и отвечу на все Ваши вопросы.

Введите ваше имя *

Введите контактный телефон *

Введите контактный e-mail *

Комментарий

[contact-form-7 404 "Not Found"]
[contact-form-7 404 "Not Found"]
Начать сотрудничество
Заполните поля ниже. Я лично перезвоню Вам в течении 15 минут для обсуждения деталей.

Введите ваше имя *

Введите контактный телефон *

Введите контактный Email для отправки точной стоимости

или позвоните мне по телефону
+7-499-70-300-44
Получить консультацию

Я свяжусь с Вами в течении 10 минут и отвечу на все Ваши вопросы.

Введите ваше имя *

Введите контактный телефон *

Введите контактный e-mail *

Комментарий

[contact-form-7 404 "Not Found"]
Оставить заявку
Заполните поля ниже. Я свяжусь с Вами в ближайшее время для обсуждения деталей

Введите контактный телефон *

Введите контактный e-mail *

Комментарий

Получить коммерческое предложение

Я свяжусь с Вами в течении 10 минут и отвечу на все Ваши вопросы.

Введите ваше имя *

Введите контактный телефон *

Введите контактный e-mail *

Какая услуга Вас интересует? *

Допонительные услуги

Комментарий

Рассчитать стоимость
Заполните поля ниже. Я свяжусь с Вами в течении 15 минут в рабочее время для обсуждения деталей

Введите контактный телефон *

Введите контактный e-mail *

Опишите ваш вопрос для того чтобы я мог рассчитать стоимость

Запись на бесплатный урок
Введите ваше имя, телефон и Skype логин и email.
Я свяжусь с Вами для уточнения времени прохождения урока.

Введите контактный телефон *

Введите ваше Skype логин *

Введите контактный E-mail *

Введите ваше имя *

Введите контактный email *

Опишите ваш вопрос в произвольной форме

Прикрепить файл,если необходимо

Заказать сайт
Первые 14 дней бесплатно. Оставьте номер email и контактный телефон. Я лично перезвоню Вам в течении 10 минут, для обсуждения деталей.


Ваш email

Введите контактный телефон

Комментарий или вопрос

Проблемы с оплатой?
Опишите ситуацию. Когда возникает проблема? Что планируете купить?

Введите ваше имя *

Введите контактный email *

Что необходимо доработать

Скачать чек-лист
Заполните поля ниже. В течении 10 минут на указанный e-mail будет отправлена ссылка на скачивание чек-листа.

Введите ваше имя *

Введите контактный E-mail *

Предварительная запись для получения скидки
Введите ваше имя, телефон и Skype логин и email. Я свяжусь с Вами для уточнения деталей прохождения курса.

С кого числа Вам удобней начать обучение в 2019 году?

Введите контактный телефон *

Введите контактный E-mail *

Выберите программу

Задать вопрос
У вас появился вопрос? Предложение? Пишите, я подробно изучу вас вопрос, подготовлю ответ и отвечу вам.

Ваше имя *

Ваш e-mail*

Ваш сайт

Сообщение *

Степень загрузки
В данном разделе представлена моя занятость в данный момент. Данные обновляются каждый день. Вся работа выполняется по предварительной записи и 20% предоплатой от стоимости проекта.
низкая загрузка. выполняется ~5 заказов. старт работ через 5 дней.
средняя загрузка. выполняется ~15 заказов. старт работ через 20 дней.
высокая загрузка. заказы временно не принимаются.
Курс SEO для интернет-магазинов

Из данного курса вы узнаете как превратить ваш интернет магазин рабочую лошадку, генерирующую по нарастающей поток клиентов из 300 человек в месяц, в 10 000 в день. С любым ассортиментом.

Особенности продвижения интернет-магазинов, специфика оптимизации. Как избавить себя от рутинной оптимизации каждой страницы и в 1 клик оптимизировать до 10 000 тыс товаров.

А также вы в разы увеличите продажи, значительно снизите стоимость клика и стоимость заявки, в перспективе сможете отказаться от контексной рекламы (только для акций), откроете новые горизонты.

И да, все это урок за уроком я лично расскажу Вам и помогу внедрить.

Длительность обучения 30 дней.

Запись на бесплатный урок
Введите ваше имя, телефон и Skype логин и email.
Я свяжусь с Вами для уточнения времени прохождения урока.

Введите контактный телефон *

Введите ваше Skype логин *

Введите контактный E-mail *

Курс SEO для корпоративных сайтов

Данный курс поможет вашему бизнесу получить новых клиентов из органического трафика.

А также вы в разы увеличите продажи, значительно снизите стоимость клика и стоимость заявки, в перспективе сможете отказаться от контексной рекламы (только для акций), откроете новые горизонты.

И да, все это урок за уроком я лично расскажу Вам и помогу внедрить.

Длительность обучения 20 дней.

Запись на бесплатный урок
Введите ваше имя, телефон и Skype логин и email.
Я свяжусь с Вами для уточнения времени прохождения урока.

Введите контактный телефон *

Введите ваше Skype логин *

Введите контактный E-mail *

Курс SEO для Landing Page

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

Курс научит Вас оптимизировать и продвигать одностраничные сайты.

И да, все это урок за уроком я лично расскажу Вам и помогу внедрить.

Длительность обучения 1 день.

Запись на бесплатный урок
Введите ваше имя, телефон и Skype логин и email.
Я свяжусь с Вами для уточнения времени прохождения урока.

Введите контактный телефон *

Введите ваше Skype логин *

Введите контактный E-mail *

Курс SEO для самостоятельного обучения

В закрытом разделе моего сайта весь курс представлен в текстовом/видео формате. Если вы желаете обучаться самостоятельно по актуальным данным которые работают в данный момент (поскольку данную информацию я обновляю сразу по мере изменений от поисковых систем) этот курс для вас.

Вы шаг за шагом приведете свой сайт в порядок и сможете увеличить трафик на 500% минимум!!!

Самым важным отличием данного курса от конкурентов является возможность онлайн переговоров со мной лично. Как это работает: вы изучаете урок, у вас появляются вопросы. Вы их записываете, мы созвонимся по скайпу или телефону и я голосом отвечаю на них.

Получить консультацию

Я свяжусь с Вами в течении 10 минут и отвечу на все Ваши вопросы.

Введите ваше имя *

Введите контактный телефон *

Введите контактный e-mail *

Комментарий

Я работаю в городе Москва, но работу строю удаленно, и ваш город Абакан, Абинск, Аксай, Александровское, Алексин, Альметьевск, Анапа, Ангарск, Апшеронск, Арзамас, Армавир, Архангельск, Ачинск, Балаково, Балашиха, Балашов, Барнаул, Батайск, Белая Калитва, Белгород, Белореченск, Березники, Бийск, Благовещенск, Благодарный, Борисоглебск, Братск, Бронницы, Брюховецкая, Брянск, Бугульма, Буденновск, Бузулук, Великие Луки, Великий Новгород, Владивосток, Владикавказ, Владимир, Волгоград, Волгодонск, Волжский, Вологда, Волхов, Воркута, Воронеж, Воскресенск, Выборг, Выкса, Выселки, Гатчина, Геленджик, Георгиевск, Горно Алтайск, Грозный, Губкин, Гудермес, Гуково, Гусь Хрустальный, Десногорск, Дзержинск, Димитровград, Дмитров, Домодедово, Донецк, Ейск, Екатеринбург, Елец, Ессентуки, Железногорск, Железногорск Красноярский край, Железнодорожный, Зеленоград, Зеленокумск, Иваново, Ивантеевка, Ижевск, Изобильный, Ипатово, Иркутск, Йошкар Ола, Казань, Калуга, Каменск Шахтинск, Камышин, Каневская, Кашира, Кемерово, Кинешма, Кириши, Киров, Клин, Клинцы, Ковров, Коломна, Комсомольск на Амуре, Кореновск, Королёв, Кострома, Котлас, Красногорск, Краснодар, Красноярск, Крымск, Кстово, Кузнецк, Курган, Курганинск, Курск, Кущевская, Лабинск, Ленинградская, Ленинск Кузнецкий, Ливны, Липецк, Лобня, Лысьва, Лыткарино, Люберцы, Москва, Магнитогорск, Майкоп, Междуреченск, Миасс, Миллерово, Минеральные воды, Михайловск, Мичуринск, Можайск, Мончегорск, Морозовск, Мостовской, Мурманск, Муром, Мытищи, Набережные Челны, Назрань, Нальчик, Находка, Невинномысск, Нерюнгри, Нефтекамск, Нефтекумск, Нефтеюганск, Нижневартовск, Нижнекамск, Нижний Новгород, Нижний Тагил, Новоалександровск, Новокузнецк, Новомосковск, Новороссийск, Новосибирск, Новочеркасск, Новошахтинск, Норильск, Ноябрьск, Нягань, Одинцово, Октябрьский, Омск, Орёл, Оренбург, Орехово Зуево, Орск, Отрадная, Павловская, Павловский Посад, Пенза, Пермь, Петрозаводск, Петропавловск Камчатский, Подольск, Приморско Ахтарск, Прокопьевск, Псков, Пушкино, Пятигорск, Раменское, Реутов, Россошь, Ростов на Дону, Рыбинск, Рязань, Санкт Петербург, Сальск, Самара, Саранск, Саратов, Саянск, Светлоград, Северодвинск, Северская, Сергиев Посад, Серов, Серпухов, Славянск на Кубани, Смоленск, Солнечногорск, Сочи, Ставрополь, Староминская, Старый Оскол, Стерлитамак, Сургут, Сызрань, Сыктывкар, Таганрог, Тамбов, Тверь, Темрюк, Тимашевск, Тихвин, Тихорецк, Тобольск, Тольятти, Томск, Трудобеликовский, Тула, Тюмень, Улан Удэ, Ульяновск, Усинск, Усолье Сибирское, Уссурийск, Усть Илимск, Усть Лабинск, Уфа, Ухта, Фрязино, Хабаровск, Ханты Мансийск, Чебоксары, Челябинск, Череповец, Чехов, Чита, Шахты, Шелехов, Щёлково, Электросталь, Энгельс, Южно Сахалинск, Якутск, Ярославльи регионАмурская область, Камчатский край, Приморский край, Республика Саха Якутия, Сахалинская область, Хабаровский край, Кировская область, Нижегородская область, Оренбургская область, Пензенская область, Пермский край, Республика Башкортостан Октябрьский и Нефтекамск, Республика Башкортостан Уфа, Республика Марий Эл, Республика Мордовия, Республика Татарстан, Республика Татарстан Казань, Республика Удмуртия, Республика Чувашия, Самарская область, Саратовская область, Ульяновская область, Архангельская область, Вологодская область, Мурманская область, Новгородская область, Псковская область, Республика Карелия, Республика Коми Воркута и Усинск, Республика Коми Сыктывкар, Республика Ингушетия, Республика Кабардино Балкария, Республика Северная Осетия Алания, Ставропольский край, Чеченская Республика, Алтайский край, Забайкальский край, Иркутская область, Кемеровская область, Красноярский край, Красноярский край Норильск, Новосибирская область, Омская область, Республика Алтай, Республика Бурятия, Республика Хакасия, Томская область, Курганская область, Свердловская область, Тюменская область, Ханты Мансийский АО, Челябинская область, Ямало Ненецкий АО, Белгородская область, Брянская область, Владимирская область, Воронежская область, Ивановская область, Калужская область, Костромская область, Курская область, Липецкая область, Орловская область, Рязанская область, Смоленская область, Тамбовская область, Тверская область, Тульская область, Ярославская область, Волгоградская область, Краснодарский край, Республика Адыгея, Ростовская область,не имеет значения.