
🖥 Jak wyświetlać treść tylko na stronie głównej WordPress
Wchodzą Państwo do panelu administracyjnego WordPress i orientują się: baner z promocją powinien wisieć na stronie głównej, ale na stronach postów wygląda nachalnie. Albo widget subskrypcji: na stronie głównej zbiera e-maile, a w treści artykułu po prostu zajmuje miejsce. Znajoma sytuacja?
WordPress nie daje wbudowanego przełącznika „pokaż tylko na stronie głównej", ale zadanie rozwiązuje się elementarnie, dwoma linijkami PHP. Bez wtyczek, bez prowizorek w functions.php z domysłami „a może zadziała". Poniżej trzy sprawdzone metody, od tagów warunkowych po szablony motywu, z czytelnymi przykładami kodu i wyjaśnieniem różnicy między is_front_page() a is_home().
💡 Szybki przegląd:
- Proszę używać is_front_page() w header.php lub footer.php motywu
- Proszę rozumieć różnicę między is_front_page a is_home
- Do podmiany całych bloków proszę tworzyć osobne pliki szablonu
- Żadne wtyczki nie są potrzebne
Czym są tagi warunkowe WordPress
Tagi warunkowe to wbudowane funkcje PHP WordPressa, które sprawdzają warunki i zwracają true lub false. Działają jak rozgałęzienie: „jeśli strona jest główna, pokaż baner, w przeciwnym razie nie rób nic".
W jądrze WordPressa są dziesiątki takich funkcji: is_single() dla pojedynczych wpisów, is_page() dla stron, is_category() dla kategorii, is_404() dla nieistniejących adresów, is_search() dla strony wyszukiwania i inne. Pozwalają one punktowo sterować wyświetlaniem treści bez ręcznej edycji każdego szablonu, sprawdzenie działa w locie podczas ładowania strony.
Dla zadania „tylko na stronie głównej" kluczowe są dwa tagi: is_front_page() oraz is_home(). Są podobne, ale zachowują się różnie w zależności od ustawień czytania, a pomyłka między nimi kosztowała początkujących niejedną godzinę debugowania.
Metoda 1: is_front_page(), podstawowe narzędzie
is_front_page() zwraca true, gdy odwiedzający znajduje się na stronie głównej witryny, tej samej, która otwiera się pod głównym adresem URL (https://вашсайт.ru/). To Państwa główne narzędzie do zdecydowanej większości zadań z treścią tylko na stronę główną.
Podstawowa składnia:
1 <?php if ( is_front_page() ) : ?> 2 <div class="homepage-banner"> 3 <p>Специальное предложение только для посетителей сайта!</p> 4 </div> 5 <?php endif; ?> 6
Proszę umieścić ten kod w header.php (zaraz po otwierającym tagu <body>) lub w footer.php, baner pojawi się wyłącznie na stronie głównej, a na wszystkich innych stronach go nie będzie.
Przykład z wyświetleniem dowolnego bloku HTML:
1 <?php if ( is_front_page() ) : ?> 2 <section class="hero-promo"> 3 <h2>Бесплатная консультация</h2> 4 <p>Оставьте заявку — и мы перезвоним в течение 15 минут.</p> 5 </section> 6 <?php endif; ?> 7
To samo podejście działa dla skryptów reklamowych, niestandardowych stylów lub osobnego shortcode’a: proszę opakować potrzebny blok w if ( is_front_page() ), a załaduje się on tylko tam, gdzie trzeba.
Ważny niuans: funkcja musi być wywoływana po tym, jak WordPress wykonał główne zapytanie do bazy danych. Proszę nie umieszczać jej w functions.php poza hakami, przed zadziałaniem akcji wp zwróci false. Bezpieczne umiejscowienie: wewnątrz plików motywu: header.php, footer.php, sidebar.php, front-page.php. Albo na hakach: wp, template_redirect, wp_head.
Metoda 2: is_home(), dla strony bloga
is_home() zwraca true, gdy odwiedzający znajduje się na stronie, na której wyświetlane są najnowsze wpisy bloga. I tu kryje się pułapka, w którą wpada prawie każdy początkujący.
Kod wygląda równie prosto:
1 <?php if ( is_home() ) : ?> 2 <p>Подпишитесь на нашу рассылку — новые статьи каждую неделю.</p> 3 <?php endif; ?>
Różnica tkwi w ustawieniach. Proszę wejść do panelu administracyjnego: Ustawienia → Czytanie → Strona główna wyświetla. Jeśli wybrano opcję „Twoje najnowsze wpisy", to is_front_page() i is_home() działają tak samo, oba zwrócą true na stronie głównej. Ale jeśli wybrano „Statyczna strona", to:
is_front_page()→truena tej statycznej stronie, którą przypisano jako stronę głównąis_home()→truena stronie, którą przypisano do wyświetlania wpisów (nawet jeśli fizycznie znajduje się pod adresem/blog/)
Innymi słowy: is_home() jest powiązany ze stroną bloga, a nie ze stroną główną witryny. Jeśli mają Państwo statyczną wizytówkę i blog jest wydzielony w /blog/, to is_home() na stronie głównej (/) zwróci false.
Is_front_page() vs is_home(): tabela porównawcza
Scenariusz | Ustawienia czytania | is_front_page() | is_home() |
|---|---|---|---|
Strona główna = najnowsze wpisy | „Twoje najnowsze wpisy" |
|
|
Strona główna = strona statyczna (odwiedzający na | Strona statyczna + strona bloga osobno |
|
|
Strona bloga = | Strona statyczna + strona bloga osobno |
|
|
Każda inna strona lub post | Dowolne ustawienia |
|
|
Zasada jest prosta: potrzebują Państwo treści ściśle na stronie głównej, proszę brać is_front_page(). Potrzebują Państwo treści na stronie ze strumieniem wpisów (niezależnie od tego, czy jest główna, czy nie), proszę brać is_home().
W praktyce większość zadań rozwiązuje właśnie is_front_page(). is_home() przydaje się, gdy blog jest wydzielony na osobną stronę i chcą Państwo na przykład pokazywać widget „Popularne wpisy" właśnie tam, a na głównej wizytówce nie.
Metoda 3: osobne pliki szablonu
Gdy trzeba podmienić nie linijkę czy dwie, a cały blok strukturalny, panel boczny, stopkę lub nagłówek, opakowywanie każdego elementu w if staje się nieporęczne. WordPress obsługuje mechanizm specyficznych plików szablonu: tworzą Państwo plik dla konkretnej strony, a jądro podchwytuje go automatycznie.
Krok 1. Proszę utworzyć nowy plik. W folderze Państwa motywu proszę utworzyć jeden z trzech wariantów:
sidebar-home.php, panel boczny dla strony głównejfooter-home.php, stopka dla strony głównejheader-home.php, nagłówek dla strony głównej
Krok 2. Proszę wypełnić treścią. Proszę umieścić w pliku HTML i PHP, które mają być pokazywane tylko na stronie głównej. Na przykład sidebar-home.php:
1 <div class="homepage-sidebar"> 2 <h3>О нашем проекте</h3> 3 <p>Мы помогаем малому бизнесу запускать сайты на WordPress с 2018 года.</p> 4 5 <h3>Подписка</h3> 6 <?php echo do_shortcode( '[newsletter_form]' ); ?> 7 </div> 8
Krok 3. Proszę wywołać plik w szablonie. W front-page.php lub index.php (zależy od motywu) proszę zastąpić standardowe wywołanie:
1 <?php get_sidebar( 'home' ); ?> 2 <?php get_footer( 'home' ); ?> 3 <?php get_header( 'home' ); ?>
WordPress na podstawie argumentu 'home' automatycznie podstawi odpowiednio pliki sidebar-home.php, footer-home.php i header-home.php. Jeśli plik nie zostanie znaleziony, nastąpi powrót do standardowego sidebar.php.
Kiedy ta metoda jest uzasadniona. Proszę wybierać podejście szablonowe, jeśli:
- Zmienia się cały blok (nie jeden przycisk, a cała struktura panelu bocznego)
- W motywie już używany jest
front-page.phpi logika się nie miesza - Planują Państwo długoterminowe utrzymanie witryny i chcą, aby pliki były czysto zorganizowane
Dla niewielkich poprawek metoda jest nadmiarowa, tagi warunkowe is_front_page() są wystarczające.
Możliwe błędy i jak ich uniknąć
Wywołanie przed inicjalizacją zapytania. Najczęstszy problem: is_front_page() w functions.php bez haka. Funkcja po cichu zwraca false i myślą Państwo, że kod nie działa. Rozwiązanie: proszę zawsze opakowywać sprawdzenie w hak wp lub template_redirect:
1 add_action( 'wp', 'my_homepage_content' ); 2 function my_homepage_content() { 3 if ( is_front_page() ) { 4 add_action( 'wp_head', 'my_homepage_banner' ); 5 } 6 }
Pomyłka z ustawieniami czytania. Jeśli przestawili Państwo witrynę ze statycznej strony głównej na strumień wpisów i zapomnieli o tym, is_home() nagle zaczyna działać tam, gdzie nie powinien. Proszę sprawdzić Ustawienia → Czytanie w pierwszej kolejności.
Sztywne kodowanie ID strony. Niektórzy deweloperzy sprawdzają if ( get_the_ID() == 5 ) zamiast is_front_page(). To jest kruche: zmienią Państwo stronę główną w ustawieniach i wszystko się zepsuje. Proszę używać tagów warunkowych, one śledzą ustawienia automatycznie.
Temat tagów warunkowych WordPress został szerzej omówiony w tym filmie, od is_page() po niestandardowe warunki dla nietypowych szablonów. Jeśli pracują Państwo z motywami regularnie, 15 minut oglądania zaoszczędzi godziny debugowania w przyszłości.
⁉️🤔 Częste pytania
Co wybrać: is_front_page() czy is_home()?
W większości przypadków
is_front_page(). Zwracatruena stronie głównej witryny niezależnie od tego, czy jest to strona statyczna, czy strumień wpisów.is_home()proszę używać tylko wtedy, gdy potrzebują Państwo konkretnie strony bloga (na przykład/blog/), a nie strony głównej.
Czy można używać obu tagów jednocześnie?
Tak, konstrukcja
if ( is_home() && ! is_front_page() )zwracatruetylko na stronie bloga, gdy nie jest ona stroną główną. Przydatne dla witryn ze statyczną stroną główną i osobną sekcją wpisów.
Czy is_front_page() działa z wtyczkami buforowania?
Tak, ale z zastrzeżeniem. Tagi warunkowe działają po stronie serwera przed wysłaniem HTML, wtyczki cache (WP Rocket, W3 Total Cache) nie mają na to wpływu. Jednak w przypadku bloków ESI (Edge Side Includes) proszę sprawdzić, czy Państwa wtyczka cache je obsługuje.
Jak wyświetlić różną treść na stronie głównej dla zalogowanych i niezalogowanych użytkowników?
Proszę połączyć
is_front_page()zis_user_logged_in(). Dla zalogowanych, spersonalizowane powitanie, dla gości, wezwanie do rejestracji. Kod zajmuje pięć linijek i wstawia się go wheader.php:
1 <?php if ( is_front_page() && is_user_logged_in() ) : ?> 2 <p>С возвращением! Вот ваши последние заказы.</p> 3 <?php elseif ( is_front_page() ) : ?> 4 <p>Добро пожаловать! Зарегистрируйтесь для персональных скидок.</p> 5 <?php endif; ?>
Czy motyw potomny musi tworzyć własne pliki header-home.php?
Jeśli motyw nadrzędny zawiera już
header-home.php, motyw potomny automatycznie go dziedziczy. Aby nadpisać, proszę utworzyć plik o tej samej nazwie w folderze motywu potomnego. WordPress najpierw szuka szablonu w motywie potomnym, a dopiero potem w nadrzędnym.
Co stosować w 2026 roku: tag warunkowy czy osobny plik?
Wybór sprowadza się do skali zadania. Proszę zapamiętać prostą zasadę: jedna linijka kodu lub jeden blok HTML, proszę brać is_front_page(). Zmienia się cały blok strukturalny (panel boczny, stopka, nagłówek) z własnym układem i logiką, proszę tworzyć osobne pliki szablonu.
W praktyce większość zadań z treścią tylko na stronę główną załatwia się dwiema linijkami tagu warunkowego. To szybkie, nie mnoży zbędnych plików w motywie i jest łatwo czytelne podczas utrzymania witryny po pół roku: nie zastanawiają się Państwo, po co tworzono sidebar-home.php, tylko widzą jawne sprawdzenie bezpośrednio w szablonie.
Proszę spróbować teraz: otworzyć header.php aktywnego motywu, znaleźć miejsce po <body> i dodać testowy blok z is_front_page(). Jeśli wszystko działa, opanowali Państwo tagi warunkowe WordPress w pięć minut.



