WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru Хостинг, VPS/VDS и отдельные сервера только на SSD дисках. 7 дней бесплатного тестирования.

Помогите составить простенький цикл вывода постов

Здравствуйте! Хотелось бы получить небольшой пример цикла, который бы выполнял примерно следующее:

выводим пост с большой миниатюрой
.....
выводим три поста с миниатюрой поменьше
.....
И так далее

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

Заранее спасибо за помощь!

0
11 месяцев назад
  • 0
    meyui 11 месяцев назад

    Благодарю за ответ, но дублировать WP_Query() чтобы добиться подобных решений с дублированием кода, меня не интересует. Я плохо разбираюсь в PHP, потому создал данную тему.

    Вот пример кода что мне нужно, только в данном случае этот код выводит только одну большую миниатюру, и только потом 3 остальные миниатюры:

    if(have_posts() ) {
    $i = 0;
    while( have_posts() ){
    the_post();
    if($i==0){
    // выводим большую первую миниатюру и пост к ней
    } elseif($i!=0 && $i<5){
    // выводим правую колонку
    } else {
    // выводим остальное
    }
    $i++;
    }
    }

    А по вашей ссылке можно прийти к выводу что нужно использовать WP_Query(), ибо больше информации не нашел как циклом мне вывести подобные посты. Мне не нужно описывать сами функции вывода, мне нужен "голый цикл", наподобии того что выложил в этом сообщении. Спасибо.

    meyui 11 месяцев назад

    А про сами функции вывода спасибо, уже достаточно переточил их, но код в шаблоне без циклов получился громоздким и не гибким. Когда в то же время можно вывести все посты только одной функцией при помощи дополнительного цикла. Мне ведь сам цикл нужен, голый каркас так сказать, чтобы вывести всю инфу как на примере моего выше выложенного кода. Всё работает отлично, вот только допилить бы его чтобы он решил мою задачу..

    meyui 11 месяцев назад

    После the_post(); добавил условие:
    if($i == 4) $i = 0;
    Всё, теперь вывод информации выводится в таком формате как мне нужно.
    Спасибо за хороший сайт-справочник, буквально целыми днями ковырялся в функциях)

    Molotow 11 месяцев назад

    Нет, так не получится, как вы хотите. Для каждой колонки свой цикл. Для каждого цикла можно задать условия чтобы он не тянул лишнее (хук pre_get_posts). Еще для каждной колонки можно подключить свой темплейт ( get_template_part() ).

    meyui 11 месяцев назад

    Да, вы правы, не получается так как после вывода всех больших миниатюр нужно еще вывести div с классом правой колонки, который больше ни разу не должен повторяться. Была мысль конечно поиздеваться и получить заведомый результат в одном цикле, но тут уже получил от вас ответ. Даже если бы мне и удалось сделать в одном цикле, то это выглядело бы негуманно и неразбериха в коде. Ваш способ показался мне и попроще и код получится намного чище. Ваш ответ мне очень помог. Большое вам спасибо!

    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация