Generator pętli w WordPress [wp_​query]

Bardzo ważną funkcją w WordPres­sie jest 'the_​post()', która zawie­ra wszyst­kie zmien­ne dotyczą­ce wpisu lub strony. Pętla obiek­tu wp_​query to kod PHP używa­ny przez WordPress do wyświe­tla­nia postów. Używa­jąc pętli, WordPress przetwa­rza każdy wpis, który ma być wyświe­tla­ny na bieżą­cej stronie i forma­tu­je go zgodnie z zadany­mi kryte­ria­mi. Każdy kod HTML lub PHP w pętli będzie przetwa­rza­ny w każdym poście.


Żeby wyświe­tlić treść wpisu lub listę stron trzeba wykonać pętlę obiek­tu wp_​query. Dla określo­nych plików (np.: page.php lub single.php) parame­try pętli są z góry określo­ne i dotyczą konkret­nych danych. Co jeśli na stronie potrze­bu­je­my infor­ma­cji o niestan­dar­do­wych postach lub najstar­szych wpisach? Wtedy z pomocą przycho­dzi możli­wość stworze­nie 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();

Zacznij­my od tabli­cy argumen­tów $args.

  1. 'post_​type' – tabli­ca typów postów z których chcemy skorzy­stać (np. post lub page)
  2. 'nopaging' – czy wpisy mają być podzie­lo­ne na strony czy wyświe­tlo­ne na jednej
  3. 'post_​per_​page' – ilość zwróco­nych postów, o ile 'nopaging' ma wartość false
  4. 'order' – kolej­ność sorto­wa­nia wyników
  5. 'order­by' – pole wg które­go sortu­je­my wyniki

Tabli­cę taką wprowa­dza­my jako parametr dla nowego obiek­tu klasy WP_​Query. Wynik przypi­su­je­my do zmien­nej – w tym przypad­ku $query.

Kolej­nym krokiem jest rozpo­czę­cie pętli. Dobrym zwycza­jem jest spraw­dze­nie, czy nasze zapyta­nie zwróci­ło wynik. Jeżeli tak, można zająć się wyświe­tle­niem danych. Od spraw­dze­nia wielko­ści wyniku mamy funkcję 'have_​post()'. Jeżeli funkcja zwróci wynik pozytyw­ny rozpo­czy­na­my pętlę. Jeżeli nie, należy opraco­wać infor­ma­cję dla puste­go wyniku.

Na koniec należy zrese­to­wać 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 );
  1. 'post_​status' – tabli­ca z dozwo­lo­ny­mi typami stanu postu. W tym przypad­ku mają być te opubli­ko­wa­ne i wrzuco­ne do śmieci.
  2. 's' – parametr wyszu­ki­wa­nia, zawie­ra zwrot do wyszu­ka­nia.
  3. 'paged' – strona wyników. W tym przypad­ku posty od 15 do 30.
  4. 'posts_​per_​page' – ile postów na stronę.

Link do generatora

Genera­tor pętli w WordPress

1 komentarz do wpisu “Generator pętli w WordPress [wp_​query]”

Dodaj komentarz

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.