Skip to content

Alt om WordPress, webutvikling — og mer til

🖥 Hvordan vise innhold kun på WordPress-forsiden

🖥 Hvordan vise innhold kun på WordPress-forsiden

Du åpner WordPress-administrasjonspanelet og innser: kampanjebanneret hører hjemme på forsiden, men på enkeltinnlegg ser det påtrengende ut. Eller en abonnementswidget som samler e-poster på forsiden, tar bare opp plass i artikkelteksten. Høres det kjent ut?

WordPress tilbyr ikke en innebygd «vis bare på forsiden»-bryter, men oppgaven løses enkelt med to linjer PHP. Ingen utvidelser, ingen gjetting eller snarveier i functions.php. Nedenfor finner du tre utprøvde metoder, fra betingede tagger til temamaler, med klare kodeeksempler og en forklaring på forskjellen mellom is_front_page() og is_home().

💡 Rask oversikt:

  • Bruk is_front_page() i temaets header.php eller footer.php
  • Forstå forskjellen mellom is_front_page og is_home
  • For å erstatte hele blokker, opprett separate malfiler
  • Ingen utvidelser kreves

Hva er betingede tagger i WordPress

Betingede tagger er innebygde PHP-funksjoner i WordPress som sjekker betingelser og returnerer true eller false. De fungerer som en forgrening: «hvis siden er forsiden, vis banneret; ellers, gjør ingenting.»

WordPress-kjernen inneholder dusinvis av slike funksjoner: is_single() for enkeltinnlegg, is_page() for sider, is_category() for kategorier, is_404() for ikke-eksisterende adresser, is_search() for søkesiden og andre. De lar deg kontrollere innholdsutdata nøyaktig uten å redigere hver mal manuelt; sjekken utføres i sanntid når siden lastes.

For «kun forside»-oppgaven er to tagger viktigst: is_front_page() og is_home(). De ser like ut, men oppfører seg forskjellig avhengig av leseinnstillingene, og forvirring mellom dem har kostet nybegynnere mange timer med feilsøking.

Metode 1: is_front_page(), det primære verktøyet

is_front_page() returnerer true når en besøkende er på nettstedets forside, den som åpnes på rot-URL-en (https://yoursite.com/). Dette er ditt hovedverktøy for de aller fleste oppgaver med innhold kun på forsiden.

Grunnleggende syntaks:

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

Plasser denne koden i header.php (rett etter det åpne <body>-taggen) eller i footer.php; banneret vil vises utelukkende på forsiden og være fraværende på alle andre sider.

Eksempel på utdata av en egendefinert HTML-blokk:

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

Samme tilnærming fungerer for annonseskript, egendefinerte stiler eller en separat shortcode: pakk den ønskede blokken inn i if ( is_front_page() ), så lastes den bare der det trengs.

Viktig nyanse: funksjonen må kalles etter at WordPress har fullført hoveddatabasespørringen. Ikke plasser den i functions.php utenfor hooks; før wp-handlingen utløses, vil den returnere false. Trygg plassering: inne i temafiler som header.php, footer.php, sidebar.php og front-page.php. Alternativt kan du bruke hooks: wp, template_redirect eller wp_head.

Metode 2: is_home(), for bloggsiden

is_home() returnerer true når en besøkende er på siden som viser de siste blogginnleggene. Og her ligger en felle som fanger nesten hver nybegynner.

Koden ser like enkel ut:

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

Forskjellen ligger i innstillingene. Gå til administrasjonspanelet: Innstillinger → Lesing → Forsiden viser. Hvis «Siste innlegg» er valgt, fungerer is_front_page() og is_home() identisk: begge returnerer true på forsiden. Men hvis «En statisk side» er valgt, da:

  • is_front_page()true på den statiske siden du angav som forside
  • is_home()true på siden du angav for visning av innlegg (selv om den fysisk ligger på /blog/)

Med andre ord: is_home() er knyttet til blogg-siden, ikke til nettstedets forside. Hvis du har en statisk landingsside og bloggen ligger på /blog/, vil is_home() på forsiden (/) returnere false.

Is_front_page() vs is_home(): sammenligningstabell

Scenario

Leseinnstillinger

is_front_page()

is_home()

Forside = siste innlegg

«Siste innlegg»

true

true

Forside = statisk side (besøkende på /)

Statisk side + egen bloggside

true

false

Bloggside = /blog/ (besøkende på /blog/)

Statisk side + egen bloggside

false

true

Enhver annen side eller innlegg

Alle innstillinger

false

false

Regelen er enkel: hvis du trenger innhold strengt tatt på forsiden, bruk is_front_page(). Hvis du trenger innhold på siden med innleggsstrømmen (uavhengig av om det er forsiden), bruk is_home().

I praksis løses de fleste oppgaver med is_front_page(). is_home() er nyttig når bloggen er på en egen side og du for eksempel ønsker å vise en «Populære innlegg»-widget spesifikt der, men ikke på landingsforsiden.

Metode 3: separate malfiler

Når du trenger å erstatte ikke en linje eller to, men en hel strukturell blokk (et sidefelt, bunntekst eller topptekst), blir det tungvint å pakke hvert element inn i if. WordPress støtter en mekanisme for spesifikke malfiler: du oppretter en fil for en bestemt side, og kjernen plukker den opp automatisk.

Trinn 1. Opprett en ny fil. I temamappen din oppretter du én av tre varianter:

  • sidebar-home.php, et sidefelt for forsiden
  • footer-home.php, en bunntekst for forsiden
  • header-home.php, en topptekst for forsiden

Trinn 2. Fyll den med innhold. Plasser HTML-en og PHP-en som bare skal vises på forsiden i filen. For eksempel 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

Trinn 3. Kall filen i malen. I front-page.php eller index.php (avhengig av temaet ditt), erstatt standardkallet:

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

WordPress bruker 'home'-argumentet for automatisk å erstatte filene sidebar-home.php, footer-home.php og header-home.php henholdsvis. Hvis en fil ikke blir funnet, faller den tilbake til standard sidebar.php.

Når denne metoden er berettiget. Velg maltilnærmingen hvis:

  • Hele blokken endres (ikke en enkelt knapp, men hele sidefeltstrukturen)
  • Temaet allerede bruker front-page.php og logikken ikke blandes
  • Du planlegger å vedlikeholde nettstedet langsiktig og ønsker ryddig filorganisering

For små redigeringer er metoden overdreven; den betingede taggen is_front_page() er tilstrekkelig.

Mulige feil og hvordan unngå dem

Kall før spørringsinitialisering. Det vanligste problemet: is_front_page() i functions.php uten en hook. Funksjonen returnerer stille false, og du antar at koden er ødelagt. Løsning: pakk alltid sjekken inn i en wp- eller template_redirect-hook:

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}

Forvirring med leseinnstillinger. Hvis du byttet nettstedet fra en statisk forside til strømmen av siste innlegg og glemte det, utløses is_home() plutselig der den ikke skal. Sjekk Innstillinger → Lesing først.

Hardkoding av side-ID. Noen utviklere sjekker if ( get_the_ID() == 5 ) i stedet for is_front_page(). Dette er skjørt: endre forsiden i innstillingene, så ryker alt. Bruk betingede tagger; de sporer innstillinger automatisk.

Temaet betingede tagger i WordPress dekkes grundigere i denne videoen, fra is_page() til egendefinerte betingelser for ikke-standard maler. Hvis du jobber med temaer regelmessig, vil 15 minutters visning spare timer med feilsøking i fremtiden.

⁉️🤔 Ofte stilte spørsmål

Hva skal jeg velge: is_front_page() eller is_home()?

I de fleste tilfeller is_front_page(). Den returnerer true på nettstedets forside uavhengig av om det er en statisk side eller innleggsstrømmen. Bruk is_home() bare når du spesifikt trenger bloggsiden (for eksempel /blog/), ikke forsiden.

Kan begge taggene brukes samtidig?

Ja, konstruksjonen if ( is_home() && ! is_front_page() ) returnerer true bare på bloggsiden når den ikke er forsiden. Nyttig for nettsteder med en statisk forside og en egen innleggsseksjon.

Fungerer is_front_page() med hurtigbuffer-utvidelser?

Ja, men med et forbehold. Betingede tagger utløses på serversiden før HTML-levering; hurtigbuffer-utvidelser (WP Rocket, W3 Total Cache) påvirker ikke dette. Men med ESI-blokker (Edge Side Includes), bekreft at hurtigbuffer-utvidelsen din støtter dem.

Hvordan viser jeg forskjellig innhold på forsiden for innloggede og utloggede brukere?

Kombiner is_front_page() med is_user_logged_in(). For innloggede brukere, en personlig hilsen; for gjester, en oppfordring til registrering. Koden tar fem linjer og plasseres i 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; ?>

Trenger et child theme sine egne header-home.php-filer?

Hvis parent theme allerede inneholder header-home.php, arver child theme den automatisk. For å overstyre, opprett en fil med samme navn i child theme-mappen. WordPress søker etter malen i child theme først og deretter i parent.

Hva skal man bruke i 2026: en betinget tagg eller en egen fil?

Valget koker ned til oppgavens omfang. Husk en enkel regel: én linje kode eller én HTML-blokk, bruk is_front_page(). Hvis en hel strukturell blokk (sidefelt, bunntekst, topptekst) med egen markup og logikk endres, opprett separate malfiler.

I praksis håndteres de fleste oppgaver med innhold kun på forsiden med to linjer av en betinget tagg. Det er raskt, skaper ikke ekstra filer i temaet og er lett å lese når du vedlikeholder nettstedet seks måneder senere: du slipper å gjette hvorfor du opprettet sidebar-home.php, fordi du ser den eksplisitte sjekken rett i malen.

Prøv det nå: åpne ditt aktive temas header.php, finn stedet etter <body>, og legg til en testblokk med is_front_page(). Hvis alt fungerer, har du mestret WordPress betingede tagger på fem minutter.