Zmiana sposobu wyświetlania kolejnych wpisów [WordPress-o-logia]


Kilka dni temu Piotrek (blog.marqu.pl) napisał mi następującego maila:

Słuchaj, mam pytanie. Jak zrobić tak jak jest u Ciebie, że pierwszy wpis wyświetlony jest z rozwinięciem a pozostałe wpisy są skrócone bardzo. Chciałbym tak zrobić u siebie, że 1 wpis ten najnowszy jest zdjęcie (może być za pomocą pól użytkownika), a reszta tak jak u mnie sam tytuł…

Oto jeden ze sposobów:

1. Pętla WordPress

Na początek gorąco polecam wpis Wojciecha Usarzewicza (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.
Tu powiem tylko, że pętla jest tą częścią silnika WordPress, która jest odpowiedzialna za wyświetlanie wpisów. Nazwa bierze się stąd, że dla każdego wpisu, który ma być wyświetlany na danej stronie WordPress przechodzi przez ten sam kawałek kodu (czyli jakby zapętla się). Podstawowa pętla wygląda następująco:

<?php if (have_posts()) : while (have_posts()) : the_post(); ?>

+++ To co będzie wyświetlane

<?php endwhile; ?>
<?php endif; ?>

Dosłownie:

- jeśli są jakieś wpisy do wyświetlenia tzn. jest ich więcej niż 0 (… if …)
- dopóki są jakieś wpisy do wyświetlenia tzn. dla każdego wpisu, który tam jest (… while …)
- Pobierz dane wpisu tzn. wczytaj tytuł, treść, obrazki i czekaj aż ci powiem co z nimi robić (… the_post…)

+++ To co każemy WordPress zrobić piszemy tu

- tu kończymy to, co ma się dziać dla każdego wpisu (… endwhile …)
- tu kończymy to, co ma się zdarzyć gdy w ogóle są jakieś wpisy (… endif …)

2. Wstawiamy licznik wpisów

Aby móc wykonać czynność dla np. pierwszego, trzeciego lub dziesiątego wpisu potrzebujemy licznik. W wersji pierwotnej WordPress zwyczajnie przechodzi przez pętlę ileśtam razy, ale nie wie który akurat kolejny wpis jest wyświetlany. Trzeba to zmienić:

<?php $i = 1; if (have_posts()) : while (have_posts()) : the_post(); ?>

+++ To co będzie wyświetlane

<?php $i++; endwhile; ?>
<?php endif; ?>

Dosłownie:

- $i będzie naszym licznikiem, a $i = 1 oznacza, że początkowo licznik ustawiony jest na jeden

- $i++ oznacza tyle, co „w tym momencie zwiększ wartość licznika $i o jeden”

Teraz za każdym razem gdy WordPress wyświetla wpis na stronie głównej wartość $i wzrasta. Jedyne czego teraz potrzebujemy to skorzystać z danych licznika.

3. korzystamy z licznika

Korzystanie z danych licznika odbywa się podobnie jak wyświetlanie wpisów w WordPress

<?php $i = 1; if (have_posts()) : while (have_posts()) : the_post(); ?>

<?php if($i == 1) : ?>

+++ To co będzie wyświetlane jeśli jest to pierwszy wpis

<?php elseif($i == 2) : ?>

+++ wyświetlane jeśli jest to drugi wpis

<?php else : ?>

+++ wyświetlane jeśli jest to kolejny wpis

<?php endif; ?>

<?php $i++; endwhile; ?>
<?php endif; ?>

4. koniec

W ten sposób możemy nie tylko wyświetlać kolejne wpisy w różny sposób, ale też zmieniać tło w co drugim wpisie. Wstawiać kod AdSense tylko dla wybranej liczby wpisów, definiować różne style css dla kolejnych odsłon itp. Zaawansowanym polecam np. bardzo ciekawy wpis na kminek.pl (WordPress: Jak nadać odmienny styl wpisom z konkretnej kategorii lub konkretnego autora?). Dość powiedzieć, że w opisany wyżej sposób wyświetlane są strona główna i wyniki szukania (twórcze rozwinięcie tematu) na tym blogu.

Korzystacie z podobnego rozwiązania? Dajcie odnośniki :)

Kommentarze: 30 »

Zostaw komentarz