Skip to content

Wszystko o WordPressie, tworzeniu stron — i nie tylko

🖥 Jak wyświetlać treść tylko na stronie głównej WordPress

🖥 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()true na tej statycznej stronie, którą przypisano jako stronę główną
  • is_home()true na 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"

true

true

Strona główna = strona statyczna (odwiedzający na /)

Strona statyczna + strona bloga osobno

true

false

Strona bloga = /blog/ (odwiedzający na /blog/)

Strona statyczna + strona bloga osobno

false

true

Każda inna strona lub post

Dowolne ustawienia

false

false

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łównej
  • footer-home.php, stopka dla strony głównej
  • header-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.php i 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:

1add_action( 'wp', 'my_homepage_content' );
2function 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(). Zwraca true na 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() ) zwraca true tylko 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() z is_user_logged_in(). Dla zalogowanych, spersonalizowane powitanie, dla gości, wezwanie do rejestracji. Kod zajmuje pięć linijek i wstawia się go w header.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.