Bardzo ważną funkcją w WordPressie jest 'the_post()', która zawiera wszystkie zmienne dotyczące wpisu lub strony. Pętla obiektu wp_query to kod PHP używany przez WordPress do wyświetlania postów. Używając pętli, WordPress przetwarza każdy wpis, który ma być wyświetlany na bieżącej stronie i formatuje go zgodnie z zadanymi kryteriami. Każdy kod HTML lub PHP w pętli będzie przetwarzany w każdym poście.
Żeby wyświetlić treść wpisu lub listę stron trzeba wykonać pętlę obiektu wp_query. Dla określonych plików (np.: page.php lub single.php) parametry pętli są z góry określone i dotyczą konkretnych danych. Co jeśli na stronie potrzebujemy informacji o niestandardowych postach lub najstarszych wpisach? Wtedy z pomocą przychodzi możliwość stworzenie własnej pętli.
// WP_Query arguments $args = array( 'post_type' => array( 'page', ' post' ), 'post_status' => array( 'publish', ' trash' ), 'nopaging' => false, 'posts_per_page' => '15', 'order' => 'ASC', 'orderby' => 'title', ); // The Query $query = new WP_Query( $args ); // The Loop if ( $query->have_posts() ) { while ( $query->have_posts() ) { $query->the_post(); // do something } } else { // no posts found } // Restore original Post Data wp_reset_postdata();
Zacznijmy od tablicy argumentów $args.
- 'post_type' – tablica typów postów z których chcemy skorzystać (np. post lub page)
- 'nopaging' – czy wpisy mają być podzielone na strony czy wyświetlone na jednej
- 'post_per_page' – ilość zwróconych postów, o ile 'nopaging' ma wartość false
- 'order' – kolejność sortowania wyników
- 'orderby' – pole wg którego sortujemy wyniki
Tablicę taką wprowadzamy jako parametr dla nowego obiektu klasy WP_Query. Wynik przypisujemy do zmiennej – w tym przypadku $query.
Kolejnym krokiem jest rozpoczęcie pętli. Dobrym zwyczajem jest sprawdzenie, czy nasze zapytanie zwróciło wynik. Jeżeli tak, można zająć się wyświetleniem danych. Od sprawdzenia wielkości wyniku mamy funkcję 'have_post()'. Jeżeli funkcja zwróci wynik pozytywny rozpoczynamy pętlę. Jeżeli nie, należy opracować informację dla pustego wyniku.
Na koniec należy zresetować pętle przy użyciu funkcji wp_reset_postdata().
Inne ciekawe opcje pętli:
// WP_Query arguments $args = array( 'post_type' => array( 'page', ' post' ), 'post_status' => array( 'publish', ' trash' ), 's' => 'grzyby jadalne', 'nopaging' => false, 'paged' => '2', 'posts_per_page' => '15', 'order' => 'ASC', 'orderby' => 'title', ); // The Query $query = new WP_Query( $args );
- 'post_status' – tablica z dozwolonymi typami stanu postu. W tym przypadku mają być te opublikowane i wrzucone do śmieci.
- 's' – parametr wyszukiwania, zawiera zwrot do wyszukania.
- 'paged' – strona wyników. W tym przypadku posty od 15 do 30.
- 'posts_per_page' – ile postów na stronę.
Dzięki za wyświetlenie ciekawego tematu!