Skip to content

Kaikki WordPressistä, web-kehityksestä — ja paljon muuta

🖥 Kuinka näyttää sisältöä vain WordPressin etusivulla

🖥 Kuinka näyttää sisältöä vain WordPressin etusivulla

Avaat WordPressin hallintapaneelin ja huomaat: kampanjabanneri kuuluu etusivulle, mutta yksittäisissä artikkeleissa se näyttää tunkeilevalta. Tai tilauswidgetti, joka kerää sähköposteja etusivulla, vie vain tilaa artikkelin rungossa. Kuulostaako tutulta?

WordPress ei tarjoa sisäänrakennettua "näytä vain etusivulla" -kytkintä, mutta tehtävä ratkeaa helposti kahdella PHP-rivillä. Ei lisäosia, ei arvailupohjaisia virityksiä functions.php-tiedostossa. Alla on kolme toimivaksi todettua tapaa ehdollisista tageista teemamalleihin, selkeine koodiesimerkkeineen ja selityksineen is_front_page()- ja is_home()-funktioiden erosta.

💡 Pikaopas:

  • Käytä is_front_page()-funktiota teemasi header.php- tai footer.php-tiedostossa
  • Ymmärrä is_front_page- ja is_home-funktioiden ero
  • Korvaa kokonaisia lohkoja luomalla erillisiä mallitiedostoja
  • Lisäosia ei tarvita

Mitä ovat WordPressin ehdolliset tagit

Ehdolliset tagit ovat WordPressin sisäänrakennettuja PHP-funktioita, jotka tarkistavat ehtoja ja palauttavat arvon true tai false. Ne toimivat haarautumana: "jos sivu on etusivu, näytä banneri; muussa tapauksessa älä tee mitään."

WordPressin ydin sisältää kymmeniä tällaisia funktioita: is_single() yksittäisille artikkeleille, is_page() sivuille, is_category() kategorioille, is_404() olemattomille osoitteille, is_search() hakusivulle ja muita. Niiden avulla voit hallita sisällön näyttämistä tarkasti ilman, että muokkaat jokaista mallia käsin; tarkistus suoritetaan lennossa sivun latautuessa.

"Vain etusivulle" -tehtävässä kaksi tagia on tärkeimmät: is_front_page() ja is_home(). Ne näyttävät samankaltaisilta, mutta toimivat eri tavoin lukemisasetuksista riippuen, ja niiden sekoittaminen on maksanut aloittelijoille monta tuntia debuggausta.

Tapa 1: is_front_page(), ensisijainen työkalu

is_front_page() palauttaa true, kun kävijä on sivuston etusivulla, sillä joka avautuu juuriosoitteesta (https://yoursite.com/). Tämä on päätyökalusi valtaosaan etusivun sisältötehtävistä.

Perussyntaksi:

1<?php if ( is_front_page() ) : ?>
2 <div class="homepage-banner">
3 <p>Специальное предложение только для посетителей сайта!</p>
4 </div>
5<?php endif; ?>
6

Sijoita tämä koodi tiedostoon header.php (heti avaavan <body>-tagin jälkeen) tai tiedostoon footer.php; banneri näkyy ainoastaan etusivulla ja puuttuu kaikilta muilta sivuilta.

Esimerkki mukautetun HTML-lohkon tulostamisesta:

1<?php if ( is_front_page() ) : ?>
2 <section class="hero-promo">
3 <h2>Бесплатная консультация</h2>
4 <p>Оставьте заявку — и мы перезвоним в течение 15 минут.</p>
5 </section>
6<?php endif; ?>
7

Sama lähestymistapa toimii mainosskripteille, mukautetuille tyyleille tai erilliselle shortcodille: kääri haluttu lohko if ( is_front_page() ) -rakenteeseen, ja se latautuu vain siellä missä tarvitaan.

Tärkeä vivahde: funktiota on kutsuttava sen jälkeen, kun WordPress on suorittanut päätietokantakyselyn. Älä sijoita sitä functions.php-tiedostoon koukkujen ulkopuolelle; ennen wp-toiminnon käynnistymistä se palauttaa false. Turvallinen sijoituspaikka: teematiedostojen, kuten header.php, footer.php, sidebar.php ja front-page.php, sisällä. Vaihtoehtoisesti käytä koukkuja: wp, template_redirect tai wp_head.

Tapa 2: is_home(), blogisivulle

is_home() palauttaa true, kun kävijä on sivulla, joka näyttää uusimmat blogiartikkelit. Ja tässä piilee ansa, johon lähes jokainen aloittelija lankeaa.

Koodi näyttää aivan yhtä yksinkertaiselta:

1<?php if ( is_home() ) : ?>
2 <p>Подпишитесь на нашу рассылку — новые статьи каждую неделю.</p>
3<?php endif; ?>

Ero on asetuksissa. Mene hallintapaneeliin: Asetukset → Lukeminen → Etusivulla näytetään. Jos "Uusimmat artikkelisi" on valittuna, is_front_page() ja is_home() toimivat samalla tavalla: molemmat palauttavat true etusivulla. Mutta jos "Staattinen sivu" on valittuna, silloin:

  • is_front_page()true staattisella sivulla, jonka määritit etusivuksi
  • is_home()true sivulla, jonka määritit artikkelien näyttämiseen (vaikka se sijaitsisi fyysisesti osoitteessa /blog/)

Toisin sanoen: is_home() on sidottu blogisivuun, ei sivuston etusivuun. Jos sinulla on staattinen laskeutumissivusto ja blogi on osoitteessa /blog/, is_home() etusivulla (/) palauttaa false.

Is_front_page() vs is_home(): vertailutaulukko

Skenaario

Lukemisasetukset

is_front_page()

is_home()

Etusivu = uusimmat artikkelit

"Uusimmat artikkelisi"

true

true

Etusivu = staattinen sivu (kävijä osoitteessa /)

Staattinen sivu + erillinen blogisivu

true

false

Blogisivu = /blog/ (kävijä osoitteessa /blog/)

Staattinen sivu + erillinen blogisivu

false

true

Mikä tahansa muu sivu tai artikkeli

Kaikki asetukset

false

false

Sääntö on yksinkertainen: jos tarvitset sisältöä nimenomaan etusivulle, käytä is_front_page(). Jos tarvitset sisältöä artikkelisyötteen sivulle (riippumatta siitä, onko se etusivu), käytä is_home().

Käytännössä useimmat tehtävät ratkaistaan is_front_page()-funktiolla. is_home() on hyödyllinen, kun blogi on erillisellä sivulla ja haluat esimerkiksi näyttää "Suositut artikkelit" -widgetin juuri siellä, mutta et laskeutumissivun etusivulla.

Tapa 3: erilliset mallitiedostot

Kun sinun ei tarvitse korvata riviä tai kahta vaan kokonainen rakenteellinen lohko (sivupalkki, alatunniste tai ylätunniste), jokaisen elementin kääriminen if-rakenteeseen käy työlääksi. WordPress tukee mekanismia tietyille mallitiedostoille: luot tiedoston tietylle sivulle, ja ydin poimii sen automaattisesti.

Vaihe 1. Luo uusi tiedosto. Luo teemakansioosi yksi kolmesta vaihtoehdosta:

  • sidebar-home.php, etusivun sivupalkki
  • footer-home.php, etusivun alatunniste
  • header-home.php, etusivun ylätunniste

Vaihe 2. Täytä se sisällöllä. Sijoita tiedostoon HTML ja PHP, joiden tulee näkyä vain etusivulla. Esimerkiksi 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

Vaihe 3. Kutsu tiedostoa mallissa. Korvaa tiedostossa front-page.php tai index.php (teemastasi riippuen) vakiokutsu:

1<?php get_sidebar( 'home' ); ?>
2<?php get_footer( 'home' ); ?>
3<?php get_header( 'home' ); ?>

WordPress käyttää 'home'-argumenttia korvatakseen tiedostot sidebar-home.php, footer-home.php ja header-home.php automaattisesti. Jos tiedostoa ei löydy, se palautuu käyttämään vakio-sidebar.php-tiedostoa.

Milloin tämä tapa on perusteltu. Valitse mallipohjainen lähestymistapa, jos:

  • Koko lohko vaihtuu (ei yksittäinen painike, vaan koko sivupalkin rakenne)
  • Teema käyttää jo front-page.php-tiedostoa eikä logiikka sekoitu
  • Suunnittelet sivuston pitkäaikaista ylläpitoa ja haluat siistin tiedostorakenteen

Pienille muokkauksille tapa on ylimitoitettu; is_front_page()-ehdollinen tagi riittää.

Mahdolliset virheet ja niiden välttäminen

Kutsuminen ennen kyselyn alustusta. Yleisin ongelma: is_front_page() functions.php-tiedostossa ilman koukkua. Funktio palauttaa hiljaisesti false, ja oletat koodin olevan rikki. Ratkaisu: kääri tarkistus aina wp- tai template_redirect-koukkuun:

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}

Sekaannus lukemisasetuksissa. Jos vaihdoit sivuston staattiselta etusivulta uusimpien artikkelien syötteeseen ja unohdit sen, is_home() laukeaa yhtäkkiä siellä missä ei pitäisi. Tarkista ensin Asetukset → Lukeminen.

Sivun ID:n kovakoodaus. Jotkut kehittäjät tarkistavat if ( get_the_ID() == 5 ) is_front_page()-funktion sijaan. Tämä on haurasta: vaihda etusivu asetuksissa, ja kaikki hajoaa. Käytä ehdollisia tageja; ne seuraavat asetuksia automaattisesti.

WordPressin ehdollisten tagien aihetta käsitellään syvällisemmin tässä videossa, aina is_page()-funktiosta mukautettuihin ehtoihin epästandardeille malleille. Jos työskentelet teemojen kanssa säännöllisesti, 15 minuutin katselu säästää tunteja debuggausta tulevaisuudessa.

⁉️🤔 Usein kysytyt kysymykset

Kumpi valita: is_front_page() vai is_home()?

Useimmissa tapauksissa is_front_page(). Se palauttaa true sivuston etusivulla riippumatta siitä, onko se staattinen sivu vai artikkelisyöte. Käytä is_home()-funktiota vain, kun tarvitset nimenomaan blogisivua (esimerkiksi /blog/), et etusivua.

Voiko molempia tageja käyttää samanaikaisesti?

Kyllä, rakenne if ( is_home() && ! is_front_page() ) palauttaa true vain blogisivulla, kun se ei ole etusivu. Hyödyllinen sivustoille, joissa on staattinen etusivu ja erillinen artikkeli-osio.

Toimiiko is_front_page() välimuistilisäosien kanssa?

Kyllä, mutta tietyin varauksin. Ehdolliset tagit suoritetaan palvelinpuolella ennen HTML-toimitusta; välimuistilisäosat (WP Rocket, W3 Total Cache) eivät vaikuta tähän. ESI-lohkojen (Edge Side Includes) kanssa varmista kuitenkin, että välimuistilisäosasi tukee niitä.

Miten näytän eri sisältöä etusivulla kirjautuneille ja kirjautumattomille käyttäjille?

Yhdistä is_front_page() ja is_user_logged_in(). Kirjautuneille käyttäjille henkilökohtainen tervehdys; vieraille rekisteröitymiskehotus. Koodi vie viisi riviä ja menee header.php-tiedostoon:

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; ?>

Tarvitseeko lapsiteema omat header-home.php-tiedostonsa?

Jos pääteema sisältää jo header-home.php-tiedoston, lapsiteema perii sen automaattisesti. Korvataksesi sen luo samanniminen tiedosto lapsiteeman kansioon. WordPress etsii mallia ensin lapsiteemasta ja vasta sitten pääteemasta.

Mitä käyttää vuonna 2026: ehdollista tagia vai erillistä tiedostoa?

Valinta riippuu tehtävän laajuudesta. Muista yksinkertainen sääntö: yksi koodirivi tai yksi HTML-lohko, käytä is_front_page(). Jos koko rakenteellinen lohko (sivupalkki, alatunniste, ylätunniste) omine merkintöineen ja logiikoineen vaihtuu, luo erilliset mallitiedostot.

Käytännössä useimmat etusivun sisältötehtävät hoidetaan kahdella ehdollisen tagin rivillä. Se on nopeaa, ei tuota ylimääräisiä tiedostoja teemaan ja on helposti luettavissa, kun ylläpidät sivustoa puolen vuoden kuluttua: sinun ei tarvitse arvailla, miksi loit sidebar-home.php-tiedoston, koska näet nimenomaisen tarkistuksen suoraan mallissa.

Kokeile heti: avaa aktiivisen teemasi header.php, etsi kohta <body>-tagin jälkeen ja lisää testilohko is_front_page()-funktiolla. Jos kaikki toimii, olet oppinut WordPressin ehdolliset tagit viidessä minuutissa.