publikacja: 29 września 2008, 17:10; autor: Wojciech Usarzewicz http://wpninja.pl/artykuly/pliki-szablonow-wordpressa-czesc-3-glebsze-spojrzenie-na-petle/

Pliki szablonów WordPressa - część 3 - Głębsze spojrzenie na pętlę

Pliki szablonów WordPressa - część 3 - Głębsze spojrzenie na pętlę

Nasz WordPress wykrywa już nowy styl w katalogu, zapewne również wyświetla już piękny nagłówek, pora więc zabrać się do pracy i zmusić go do wyświetlenia konkretnej zawartości w postaci wpisów i stron statycznych - wbrew pozorom nie jest to takie trudne, o czym już wkrótce się przekonacie.

Zerknijmy może na naszą pętlę, którą wykonaliśmy w poprzednim artykule - interesuje nas konkretny jej fragment:

<?php while ( have_posts() ) : the_post(); ?>
 
// Tresc
 
<?php endwhile; ?>

W miejsce ‘Treści’ wstawimy kod odpowiedzialny za wyświetlanie konkretnej zawartości - WordPress (w trybie standardowym) wyświetla całą zawartość wpisu za pomocą jednego zapytania (nie liczymy w tym miejscu dodatkowych zapytań tyczących się relacji wpisów do kategorii i tagów), poszczególne elementy wpisu zaś wyświetlane są za pomocą prostych funkcji - oto ich lista:

  • the_ID() - wyświetla ID wpisu;
  • the_title() - wyświetla tytuł wpisu;
  • the_permalink() - wyświetla link do wpisu;
  • the_content() - wyświetla treść wpisu;
  • the_excerpt() - wyświetla podsumowanie wpisu;
  • the_time() - wyświetla datę wpisu;
  • edit_post_link() - tworzy link do strony edycji wpisu;

Dodatkowo, aby nasz wpis był nieco bardziej kompletny, możemy wykorzystać następujące funkcje, które określą relacje występujące pomiędzy wpisem a tagami, kategoriami i autorami, a następnie wyświetlą odpowiednie wartości:

  • the_tags() - wyświetla tagi przypisane do wpisu;
  • the_category() - wyświetla kategorie wpisu;
  • the_author() - wyświetla nazwę autora wpisu;

Znajomość powyższych funkcji pozwala nam już wyświetlić wpisy, tworząc dla przykładu coś takiego:

<div class="post" id="post-<?php the_ID(); ?>">
<h2><?php the_title(); ?></h2>
 
<p class="meta">Napisał: <?php the_author(); ?> w dniu: <?php the_time('F jS, Y') ?>, w kategorii: <?php the_category(', ') ?></p>
 
<?php the_content('Czytaj więcej...'); ?>
 
<?php the_tags( '<p>Otagowano ', ', ', '</p>'); ?>
 
</div>
</div>

Wnikliwi zauważą zapewne, że the_content() oraz the_time() posiadają treść między nawiasami - są to tak zwane parametry bądź atrybuty funkcji. W przypadku the_time() np. pozwalają na sformatowanie wyświetlanie daty i czasu. Możemy je pominąć, wtedy data i czas będą formatowane zgodnie z ustawieniami WordPressa (które ustawiamy z panelu zarządzania). Zaś treść w the_content() będzie wyświetlana w momencie, gdy we wpisie umieścimy znacznik <!--more--> - atrybutami jednak zajmiemy się innym razem.

Pętla i strony statyczne

Nazwa „pętla” wzięła się z tego, że powyższy kod będzie powielany tak długo, aż w bazie danych nie skończą się wpisy (bądź nie określimy inaczej przy tworzeniu własnych zapytań do bazy - o tym kiedy indziej).

Ktoś jeszcze zapyta „no dobra, mamy wpisy, ale co ze stronami statycznimi?” - otóż to samo - powyższy kod może byż zastosowany zarówno do wpisów, jak i do stron statycznych - wyjątkiem będą tagi i kategorie, które nie zostaną wyświetlone (bo nie można ich dodać do stron statycznych) - jak więc WordPress rozróżnia co jest stroną statyczną, a co wpisem i skąd wie jak co wyświetlić? O tym już w kolejnej części, cierpliwości.

Komentarze (13)

  1. icelander icelander 1221 dni temu:

    Bardzo ciekawe. Mam jednak takie małe pytanie.
    Czy jeśli wstawię między
    # the_content() -
    # the_excerpt()
    np. kod do reklam google to będą one wyświetlane w środku wpisu?
    Pozdrawiam

    odpowiedz
  2. Wojciech Usarzewicz Wojciech Usarzewicz 1221 dni temu:

    Przyjęło się, że the_content i the_excerpt nie są wyświetlane razem - choć można ich używać np. do wstepu i treści właściwej, w tym wypadku excerpt pojawia się pierwszy - bo wstęp lepiej wygląda na początku :P.

    Wstawiając wtedy między dwie funkcje dowolny kod, pojawi się on między wstępem a treścią właściwą. Nie ma jednak możliwości „ręcznego” umieszczenia kodu w środku treści właściwej (w środku the_content), trzeba się posłużyć odpowiednimi wtyczkami, czego osobiście nie polecam.

    odpowiedz
  3. kmita kmita 1219 dni temu:

    Super, czekam na następną część ;)

    odpowiedz
  4. TopBlogger TopBlogger 1164 dni temu:

    Przepraszam za niedopatrzenie Wojtek - autor w oryginale poprawiony :).

    odpowiedz
  5. NoVi NoVi 1124 dni temu:

    Panowie a powiedzcie mi, jaki będzie kod na link do Zaloguj/ Zarejestruj
    tzn ze jak jestem Zalogowany to mnie jako adminowi Pisze panel Admina a jak nie jestem zalogowany to Zarejestruj Bądź zaloguj..

    Bo brakuje mi tego w stylu moim :P

    odpowiedz
  6. Wojciech Usarzewicz Wojciech Usarzewicz 1123 dni temu:

    @NoVi,

    Bodajże ‘wp_loginout();’ będzie odpowiednią funkcją do wyświetlenia ‘zaloguj/wyloguj’, natomiast ‘wp_register(‘before’, ‘after’);’ będzie używane do wyświetlenia linku rejestracji, bądź panelu admina (jesli rejestracja jest oczywiście włączona).

    odpowiedz
  7. NoVi NoVi 1123 dni temu:

    Wojciech Usarzewicz dzięki bardzo, działa tak jak mowiłes :)

    odpowiedz
  8. Kazislav Kazislav 917 dni temu:

    Czyli jak dobrze rozumiem to:

    (); ?>

    // Tresc
    // Jakieś podpisy i np reklama czy podobne wpisy.

    Nie znam się na PHP a chcę wiedzieć gdzie wciskać np. skrypt (JS) który wyświetli się pod postem. Szablon mam ten
    http://wordpress.org/extend/themes/carrington-blog
    i za nic nie wiem gdzie to wkleić.

    odpowiedz
  9. Kazislav Kazislav 917 dni temu:

    Hmmm… coś mi ucięło. Chodzi o to czy jeżeli wcisnę w tym kawałku pętli to czy wyświetli mi pod wpisem?

    odpowiedz
  10. Zacol Zacol 917 dni temu:

    @Kazislav: Obawiam się, że zbyt chaotycznie opisałeś o co Ci chodzi. Możesz to jakoś inaczej wyjaśnić?

    odpowiedz
  11. Zacol Zacol 917 dni temu:

    @Kazislav: Chyba już wiem o co Ci chodzi ;) Jeśli dobrze kombinuję to chcesz pod wpisami wyświetlić reklamę lub rubrykę z podobnymi wpisami tak jak na tym blogu. Specem w PHP nie jestem, ale chyba dobrze myślisz. Spróbuj to wrzucić za skryptem PHP czyli po ?>. Wtedy powinno się wyświetlać za każdym razem, ale to tak tylko na chłopski rozum. Najlepiej sprawdź sam. Jak nie dojdziesz do ładu to Wojciech pewnie pomoże.

    odpowiedz
  12. sosus sosus 140 dni temu:

    u mnie rzuca bledem w tej linii the_post>(), nie powinno byc the_post() ?

    odpowiedz
  13. Szymon Skulimowski Szymon Skulimowski 140 dni temu:

    Tak, masz rację. Błędny zapis poprawiłem, dzięki za informację!

    odpowiedz

Dodaj własny komentarz

Odnośniki z innych stron (4)

Lista innych stron, które w jakiś sposób odnoszą się do opublikowanej tutaj treści:

  1. WordPress: Jak nadać odmienny styl wpisom z konkretnej kategorii lub konkretnego autora? | kminek.pl

    […] Rozwiązanie tego problemu sprowadza się do napisania własnej funkcji i wpięciu jej w odpowiednie miejsce w pętlę WordPressa. […]

  2. Zmiana sposobu wyświetlania kolejnych wpisów [WordPress-o-logia] | TopBlogger

    […] początek gorąco polecam wpis Szymona Skulimowskiego (Pliki szablonów WordPressa - część 3 - Głębsze spojrzenie na pętlę) opisującego samą pętlę WordPress, której znajomość będzie potrzebna by wykonać zadanie. […]

  3. Miniatury w locie czyli phpThumb() w akcji

    […] małą miniaturkę na stronie głównej naszego blogu. W tym celu otwieramy plik index.php i w pętli lokalizujemy miejsce, gdzie chcemy wyświetlić nasz […]

  4. Najlepsze artykuły o tworzeniu skórek do WordPressa « Interaktywni.net

    […] Pliki szablonów WordPressa – część 3 – Głębsze spojrzenie na pętlę - wpninja.pl […]