publikacja: 29 września 2008, autor: , komentarzy 19 https://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

  1. icelander 9 lat 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
    1. Wojciech Usarzewicz 9 lat 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
  2. kmita 9 lat temu:

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

    odpowiedz
  3. TopBlogger 9 lat temu:

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

    odpowiedz
  4. NoVi 9 lat 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
    1. Wojciech Usarzewicz 9 lat temu:

      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
    2. NoVi 9 lat temu:

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

      odpowiedz
  5. Kazislav 8 lat 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
    1. Kazislav 8 lat 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
    2. Zacol 8 lat temu:

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

      odpowiedz
    3. Zacol 8 lat temu:

      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
  6. sosus 6 lat temu:

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

    odpowiedz
    1. Szymon Skulimowski 6 lat temu:

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

      odpowiedz
  7. Karo 4 lata temu:

    A czy da się zrobić tak, żeby wyświetliło i tag i jego opis? Ale żeby wyświetliło tylko jeden konkretny tag – kiedy w mojej stronie szukam sobie tagu, to żeby wyświetliło tylko ten jeden konkretny tag, jego opis i posty, w którym ten tag jest zawarty? Da się coś takiego zrobić?

    odpowiedz
    1. Szymon Skulimowski 4 lata temu:

      Chodzi Ci o taką stronę? :-)
      http://www.songlish.com.pl/tag/shame/

      odpowiedz

Dodaj własny komentarz

Odnośniki z innych stron

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 […]