WordPress как на ладони
wordpress jino

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

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

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

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

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

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

    Благодарю за ответ, но дублировать 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 2 месяца назад

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

    meyui 2 месяца назад

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

    Molotow 2 месяца назад

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

    meyui 2 месяца назад

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

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