Generator pętli w WordPress [wp_query]

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.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// WP_Query arguments
$args = array(
    'post_type' => array( 'post' ),
    'posts_per_page' => '3',
    'order' => 'DESC',
    'orderby' => 'date',
);

// The Query
$query_news = new WP_Query( $args );

// The Loop
if ( $query_news->have_posts() ) {
    while ( $query_news->have_posts() ) {
        $query_news->the_post();
        // do something
    }
} else {
    // no posts found
}

// Restore original Post Data
wp_reset_postdata();

Zacznijmy od tablicy argumentów $args.

  1. ‚post_type’ – tablica typów postów z których chcemy skorzystać (np. post lub page)
  2. ‚post_per_page’ – ilość zwróconych postów
  3. ‚order’ – sortowanie wyników
  4. ‚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_news.

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:

1
2
3
4
5
6
$args = array(
    'post_status' => array( 'publish', 'trash' ),
    's' => 'lorem ipsum',
    'paged' => '2',
    'posts_per_page' => '10',
);
  1. ‚post_status’ – tablica z dozwolonymi typami stanu postu. W tym przypadku mają być te opublikowane i wrzucone do śmieci.
  2. ‚s’ – parametr wyszukiwania, zawiera zwrot do wyszukania.
  3. ‚paged’ – strona wyników. W tym przypadku posty od 11 do 20.
  4. ‚posts_per_page’ – ile postów na stronę.

Link do generatora

Generator pętli w WordPress

1 komentarz do wpisu “Generator pętli w WordPress [wp_query]

Dodaj komentarz

Privacy Preference Center

Treść banner z cookies

Lorem ipsum dolor sit amet enim. Etiam ullamcorper. Suspendisse a pellentesque dui, non felis. Maecenas malesuada elit lectus felis, malesuada ultricies. Curabitur et ligula. Ut molestie a, ultricies porta urna. Vestibulum commodo volutpat a, convallis ac, laoreet enim. Phasellus fermentum in, dolor. Pellentesque facilisis. Nulla imperdiet sit amet magna. Vestibulum dapibus, mauris nec malesuada fames ac turpis velit, rhoncus eu, luctus et interdum adipiscing wisi. Aliquam erat ac ipsum. Integer aliquam purus. Quisque lorem tortor fringilla sed, vestibulum id, eleifend justo vel bibendum sapien massa ac turpis faucibus orci luctus non, consectetuer lobortis quis, varius in, purus. Integer ultrices posuere cubilia Curae, Nulla ipsum dolor lacus, suscipit adipiscing. Cum sociis natoque penatibus et ultrices volutpat. Nullam wisi ultricies a, gravida vitae, dapibus risus ante sodales lectus blandit eu, tempor diam pede cursus vitae, ultricies eu, faucibus quis, porttitor eros cursus lectus, pellentesque eget, bibendum a, gravida ullamcorper quam. Nullam viverra consectetuer. Quisque cursus et, porttitor risus. Aliquam sem. In hendrerit nulla quam nunc, accumsan congue. Lorem ipsum primis in nibh vel risus. Sed vel lectus. Ut sagittis, ipsum dolor quam.

google analitycs

Close your account?

Your account will be closed and all data will be permanently deleted and cannot be recovered. Are you sure?