Pętla (the loop) jest jednym z fundamentów systemów CMS. Nie inaczej sytuacja wygląda w WordPress. Pętla umożliwia szybkie przeszukanie treści serwisu i wybranie z niej potrzebnych składników. W WordPress istnieje wiele dodatkowych funkcji, które dodatkowo ułatwiają korzystanie z pętli. Za pomocą kilku prostych funkcji można łatwo wewnątrz pętli wyciągnąć takie dane jak tytuł, treść posta, miniaturka czy link. Najprostszym przykładem zastosowania pętli jest:
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<h2><?php the_title(); ?></h2>
<?php the_post_thumbnail(); ?>
<?php echo get_the_excerpt(); ?>
<a href="<?php the_permalink(); ?>">READ MORE</a>
<?php endwhile; else: ?>
<p>Sorry, no posts to list</p>
<?php endif; ?>
Pokrótce objaśnię poszczególne linie kodu (cyfra odpowiada numerowi wiersza):
- duża część pętli – instrukcja która sprawdza czy są posty, a jeżeli są to wykonuje się tyle razy ile jest postów dając tym samym dostęp do wnętrza postów
- funkcja WordPressa the_title(), która wyciąga tytuł posta i umieszczona jest w nagłówku H2
- funkcja WP the_post_thumbnail(), która wyciąga grafikę (miniaturkę) posta i wyświetla ją
- funkcja WP get_the_excerpt(), pobiera część treści posta i wyświetla ją (stosowany przy listingu wielu postów)
- funkcja WP the_permalink(), pobiera link do posta – umieszczona jest wewnątrz <A HREF> – umożliwi to nadanie dynamicznego linku do READ MORE
- koniec pętli i jeżeli nie było żadnych postów to wyświetlenie akcji zawartej poniżej
- w tym wypadku jest to tekst „Sorry, no posts to list”, ale może tu być jakakolwiek inna akcja
- zakończenie warunku
Prawdziwe jednak możliwości pojawiają się dopiero, gdy przed wyświetleniem postów będzie można nadać tej pętli warunki. Przedstawię tutaj tylko kilka możliwości, ponieważ jest ich bardzo dużo a po więcej polecam anglojęzyczną stronę WordPressa:
order: – sortowanie wyniku działania
- ASC – narastające (1,2,3; a,b,c)
- DESC – malejące (3,2,1;c,b,a)
orderby – kategoria według, której posty będą sortowane
- author – autor
- title – tytuł
- name – tzw. post slug czyli końcówka linku indywidualna dla danego posta
- date – data
- rand – losowo
- comment_count – liczba komentarzy
Przykład użycia pętli, która losuje 5 postów i je wyświetla. Nowością, są pierwsze linijki, w których określone zostały warunki wyciągnięcia postów.
<?php
$args = array (
'orderby' => 'rand',
'posts_per_page' => 5,
);
$posty = new WP_Query($args);
while($posty->have_posts()) :
$posty->the_post();
?>
<H1><?php the_title(); ?></H1>
<H4>Autor: <?php the_author(); ?> , <?php the_date(); ?></H4>
<div><?php the_content(); ?></div>
<?php endwhile; ?>
Zmienne $args i $posty, są wymyślone i mogę tu być dowolne nazwy natomiast w drugiej części pojawiły się kolejne funkcje WordPressa, których znaczenie jest następujące:
- the_author() – pobiera autora posta
- the_date() – pobiera datę publikacji posta
- the_content() – pobiera całego posta włącznie z ewentualnymi zdjęciami