• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Jak wyświetlić wszystkie posty z jednej kategorii po 3 w każdym divie ? Wordpress

VPS Starter Arubacloud
+1 głos
674 wizyt
pytanie zadane 12 czerwca 2015 w PHP przez RobsonWD Nowicjusz (220 p.)

Cześć wszystkim.

Tworzę prostą stronę na cms wordpress. Zrobiłem sobie slider bootstrap, w którym są 3 boxy(div.item)
Zrobiłem 6 wpisów w 1 kategorii i chciałbym je teraz wyświetlić w pętli po 3 posty co 1 div.item. 
I tutaj jestem w kropce, bo nie mam pomysłu jak to rozwiązać elastycznie, tzn jak będzie więcej wpisów niż 6 np 9 to automatycznie dodany będzie jeszcze jeden div.item z kolejnymi 3 wpisami itd.

Póki co mój kod wygląda tak 

<div class="item active">
  <div class="row text-center">
     <?php $inner_query = new WP_Query( array(
      'post_type' =>'post',
      'posts_per_page' => 3,
      'category_name' => 'team'
     ) ); ?>
            <?php if ( $inner_query->have_posts() ) : while ( $inner_query->have_posts() ) : $inner_query->the_post(); ?>
                                <a href="<?php the_permalink(); ?>">
                                    <div class="col-sm-4">
                                        <div class="thumbnail">
                                            <?php the_post_thumbnail('full', array('class' => 'img-responsive')); ?>
                                            <div class="caption">
                                                <h5><?php the_title(); ?></h5>
                                                <p><?php echo the_field('profession'); ?></p>
                                            </div>
                                        </div>
                                    </div>
                                </a>
            <?php endwhile; else: endif; wp_reset_postdata(); ?>
  </div>
</div>

<div class="item">
  <div class="row text-center">
    <?php $inner_query = new WP_Query( array(
      'post_type' =>'post',
      'posts_per_page' => 3,
      'category_name' => 'team',
      'offset' => 3
     ) ); ?>
            <?php if ( $inner_query->have_posts() ) : while ( $inner_query->have_posts() ) : $inner_query->the_post(); ?>
                                <a href="<?php the_permalink(); ?>">
                                    <div class="col-sm-4">
                                        <div class="thumbnail">
                                            <?php the_post_thumbnail('full', array('class' => 'img-responsive')); ?>
                                            <div class="caption">
                                                <h5><?php the_title(); ?></h5>
                                                <p><?php echo the_field('profession'); ?></p>
                                            </div>
                                        </div>
                                    </div>
                                </a>
             <?php endwhile; else: endif; wp_reset_postdata(); ?>
  </div>
</div>


Jednak tutaj mam te posty ustawione ręcznie, więc jak dodam więcej wpisów, nie będą wyświetlone, jak dam większą ilość w atrybucie posts per page, to wtedy pętla wypluje te posty w danym divie.

Czy ktoś ma jakiś pomysł jak uelastycznić ten problem ? 

Z góy dzięki za odpowiedzi.

1 odpowiedź

0 głosów
odpowiedź 5 sierpnia 2015 przez roque Bywalec (2,160 p.)
<div class="item active">
  <div class="row text-center">
    <?php $inner_query = new WP_Query( array(
      'post_type' =>'post',
      'posts_per_page' => 999,
      'category_name' => 'team',
      'offset' => 0
     ) ); ?>

	    <?php $i=1; $count = $inner_query->found_posts; ?>

            <?php if ( $inner_query->have_posts() ) : while ( $inner_query->have_posts() ) : $inner_query->the_post(); ?>
                <a href="<?php the_permalink(); ?>">
                    <div class="col-sm-4">
                        <div class="thumbnail">
                            <?php the_post_thumbnail('full', array('class' => 'img-responsive')); ?>
                            <div class="caption">
                                <h5><?php the_title(); ?></h5>
                                <p><?php echo the_field('profession'); ?></p>
                            </div>
                        </div>
                    </div>
                </a>

		<?php 
		if($i == $count)
		{
			echo '</div>';
		}
		else if($i % 3 == 0)
		{
			echo '</div><div class="row text-center">';
		}
		 ?>

		<?php $i++; ?>
             <?php endwhile; else: endif; wp_reset_postdata(); ?>
</div>

Spróbuj coś takiego, nie testowałem, napisalem na szybko bez testowania na żywo na WP, ale powinno dzialać, jeśli miałbyś jakiś problem to sprawdz jaki leci błąd i poprawisz i zobacz konwencje rozwiazania tego problemu w linii "if($i == $count)" i niżej

Podobne pytania

0 głosów
1 odpowiedź 172 wizyt
pytanie zadane 21 października 2019 w Inne języki przez fipooo Bywalec (2,880 p.)
0 głosów
1 odpowiedź 265 wizyt
pytanie zadane 30 grudnia 2017 w PHP przez Adrian1999 Nałogowiec (34,570 p.)
0 głosów
1 odpowiedź 867 wizyt
pytanie zadane 19 lipca 2017 w PHP przez Kuba Kubas Początkujący (300 p.)

93,024 zapytań

141,986 odpowiedzi

321,290 komentarzy

62,371 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...