WordPress

Wyświetl wszystkie posty ze wszystkich kategorii z podziałem na strony

  • 15 września, 2014
  • 3 min read
Wyświetl wszystkie posty ze wszystkich kategorii z podziałem na strony


W porządku, może to być trudne do wyjaśnienia, ale zrobię, co w mojej mocy.

Na stronie głównej chcę wyświetlić wszystkie posty ze wszystkich kategorii. Jednak chcę, żeby były podzielone. Weź to jako przykład:

wprowadź tutaj opis obrazu

Lata są właściwie kategoriami. Każda kategoria reprezentuje inny rok. Wstawiam więc moje posty (które wyświetlają tylko miniaturę w pętli) w kategorii, która dotyczy czasu zrobienia zdjęć.

Na początku każdej kategorii chcę, aby wyświetlała nazwę kategorii, jak pokazano powyżej. Używam również nieskończonego przewijania jQuery od Paula Irisha, więc zasadniczo przyciski stronicowania są zastępowane paskiem ładowania i po prostu ładują się na tej samej stronie, gdy użytkownik przewija w dół.

Mój obecny kod to:

<div class="post clear">
    <a href=" echo get_category_link(4); ?>"><div class="date"><?php echo get_cat_name(4); ?></div></a>
    <?php
    $catPost = get_posts('cat=4&posts_per_page=-1');
    foreach ($catPost as $post) : setup_postdata($post); ?>
        <?php get_template_part('content'); ?>
    <?php endforeach;?>
</div>
<div class="post clear">
    <a href="<?php echo get_category_link(1); ?>"><div class="date"><?php echo get_cat_name(1); ?></div></a>
    <?php
    $catPost = get_posts('cat=1&posts_per_page=-1');
    foreach ($catPost as $post) : setup_postdata($post); ?>
        <?php get_template_part('content'); ?>
    <?php endforeach;?>
</div>

I faktycznie działa. Cóż prawie. Przede wszystkim muszę wstawiać kategorię po kategorii za każdym razem, gdy tworzę nową, a większość kodu jest powielana. Jedyne, co się zmienia, to identyfikatory kategorii. Byłoby znacznie lepiej, gdybym za pomocą tylko jednego kodu mógł pobrać wszystkie kategorie tak, jak chcę.

Warto przeczytać!  zapytanie wp — filtr wyszukiwania WordPress Ajax przy wyborze listy rozwijanej

Kolejnym problemem jest to, że paginacja nie działa. Jeśli przewinę w dół (lub wyłączę przewijanie w nieskończoność i kliknę drugą stronę), po prostu będzie wyświetlać powtarzającą się zawartość w kółko.

Myślę, że macie pomysł. Chcę, aby użytkownicy mogli przeglądać moją galerię i za każdym razem, gdy pojawi się nowy zestaw zdjęć z innego roku, data pojawi się na pierwszym obrazie. Wymyśliłem to rozwiązanie kategorii, ale staje się trochę trudne, aby działało tak, jak chcę.

Jakieś rozwiązania/sugestie?

Z góry dziękuję!

EDYTOWAĆ @najlepszy programista na świecie

<?php
    $args=array(
      'posts_per_page' => -1,
      'orderby' => array( 'date' => 'DESC', 'title' => 'ASC' ),  //This works in WP4.0!!!     
      'caller_get_posts'=> 1
    );
    $my_query = new WP_Query($args);


    if( $my_query->have_posts() ) {
      $nr_datesyear = 0;
      while ($my_query->have_posts()) : $my_query->the_post();

        $year = get_the_date('Y');


        if ($year !== $yeargroup && $nr_datesyear <=5) {
            $nr_datesyear = 0;  
            echo '<div class="post clear">';
        }
        echo '<a href="'. $year .'"><span class="date">'. $year .'</span></a>';                  
        get_template_part('content');

        if ($year !== $yeargroup && $nr_datesyear <=5) {
            echo '<div>'; //end post year group
            $yeargroup = $year;   
        }

        $nr_datesyear++;  
            endwhile;            
        }

        wp_reset_query();
?>


Źródło

Warto przeczytać!  wtyczki - Jak odzyskać poprawne dane robocze po kliknięciu przycisku ostatecznego przesłania