Skip to content

Allt om WordPress, webbutveckling — och mer därtill

🖥 Hur du visar innehåll endast på WordPress startsida

🖥 Hur du visar innehåll endast på WordPress startsida

Du öppnar WordPress-adminpanelen och inser: kampanjbannern hör hemma på startsidan, men på enskilda inlägg ser den störande ut. Eller en prenumerationswidget som samlar in e-postadresser på startsidan tar bara upp plats i artikeltexten. Känns det igen?

WordPress har ingen inbyggd "visa endast på startsidan"-växel, men uppgiften löses enkelt med två rader PHP. Inga plugins, inga gissningshack i functions.php. Nedan följer tre beprövade metoder, från villkorsstaggar till temamallar, med tydliga kodexempel och en förklaring av skillnaden mellan is_front_page() och is_home().

💡 Snabb översikt:

  • Använd is_front_page() i ditt temas header.php eller footer.php
  • Förstå skillnaden mellan is_front_page och is_home
  • För att ersätta hela block, skapa separata mallfiler
  • Inga plugins krävs

Vad är WordPress villkorsstaggar

Villkorsstaggar är inbyggda WordPress PHP-funktioner som kontrollerar villkor och returnerar true eller false. De fungerar som en förgrening: "om sidan är startsidan, visa bannern; annars, gör ingenting."

WordPress kärna innehåller dussintals sådana funktioner: is_single() för enskilda inlägg, is_page() för sidor, is_category() för kategorier, is_404() för adresser som inte finns, is_search() för söksidan och andra. De låter dig styra innehållsutmatning exakt utan att redigera varje mall manuellt; kontrollen sker i farten när sidan laddas.

För uppgiften "endast startsidan" är två taggar viktigast: is_front_page() och is_home(). De ser lika ut men beter sig olika beroende på läsinställningar, och förvirring mellan dem har kostat nybörjare många timmars felsökning.

Metod 1: is_front_page(), det primära verktyget

is_front_page() returnerar true när en besökare är på webbplatsens framsida, den som öppnas på rot-URL:en (https://yoursite.com/). Detta är ditt huvudsakliga verktyg för de allra flesta uppgifter som rör startsidespecifikt innehåll.

Grundläggande syntax:

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

Placera denna kod i header.php (direkt efter den inledande <body>-taggen) eller i footer.php; bannern visas uteslutande på startsidan och saknas på alla andra sidor.

Exempel på utmatning av ett anpassat HTML-block:

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

Samma tillvägagångssätt fungerar för annonsskript, anpassade stilar eller en separat shortcode: slå in önskat block i if ( is_front_page() ), så laddas det bara där det behövs.

Viktig nyans: funktionen måste anropas efter att WordPress har slutfört den huvudsakliga databasfrågan. Placera den inte i functions.php utanför hooks; innan wp-actionen körs returnerar den false. Säkra placeringar: inuti temafiler som header.php, footer.php, sidebar.php och front-page.php. Alternativt kan du använda hooks: wp, template_redirect eller wp_head.

Metod 2: is_home(), för bloggsidan

is_home() returnerar true när en besökare är på sidan som visar de senaste blogginläggen. Och här finns en fälla som fångar nästan varje nybörjare.

Koden ser precis lika enkel ut:

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

Skillnaden ligger i inställningarna. Gå till adminpanelen: Inställningar → Läsa → Din startsida visar. Om "Dina senaste inlägg" är valt fungerar is_front_page() och is_home() identiskt: båda returnerar true på startsidan. Men om "En statisk sida" är vald gäller följande:

  • is_front_page()true på den statiska sida du angav som startsida
  • is_home()true på den sida du angav för att visa inlägg (även om den fysiskt ligger på /blog/)

Med andra ord: is_home() är knuten till bloggsidan, inte till webbplatsens framsida. Om du har en statisk landningssida och bloggen ligger på /blog/ kommer is_home() på startsidan (/) att returnera false.

Is_front_page() vs is_home(): jämförelsetabell

Scenario

Läsinställningar

is_front_page()

is_home()

Startsida = senaste inlägg

"Dina senaste inlägg"

true

true

Startsida = statisk sida (besökare på /)

Statisk sida + separat bloggsida

true

false

Bloggsida = /blog/ (besökare på /blog/)

Statisk sida + separat bloggsida

false

true

Vilken annan sida eller inlägg som helst

Alla inställningar

false

false

Regeln är enkel: om du behöver innehåll strikt på startsidan, använd is_front_page(). Om du behöver innehåll på sidan med inläggsflödet (oavsett om det är startsidan), använd is_home().

I praktiken löses de flesta uppgifter med is_front_page(). is_home() är användbart när bloggen ligger på en separat sida och du till exempel vill visa en "Populära inlägg"-widget specifikt där men inte på landningssidan.

Metod 3: separata mallfiler

När du behöver ersätta inte en rad eller två utan ett helt strukturellt block (en sidopanel, sidfot eller sidhuvud) blir det otympligt att slå in varje element i if. WordPress stöder en mekanism för specifika mallfiler: du skapar en fil för en viss sida, och kärnan plockar upp den automatiskt.

Steg 1. Skapa en ny fil. I din temamapp skapar du en av tre varianter:

  • sidebar-home.php, en sidopanel för startsidan
  • footer-home.php, en sidfot för startsidan
  • header-home.php, ett sidhuvud för startsidan

Steg 2. Fyll den med innehåll. Placera HTML och PHP som endast ska visas på startsidan i filen. Till exempel 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

Steg 3. Anropa filen i mallen. I front-page.php eller index.php (beroende på ditt tema) ersätter du standardanropet:

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

WordPress använder argumentet 'home' för att automatiskt ersätta med filerna sidebar-home.php, footer-home.php respektive header-home.php. Om en fil inte hittas faller den tillbaka på standardfilen sidebar.php.

När denna metod är motiverad. Välj mallmetoden om:

  • Hela blocket förändras (inte en enskild knapp, utan hela sidopanelens struktur)
  • Temat redan använder front-page.php och logiken inte blandas ihop
  • Du planerar att underhålla webbplatsen långsiktigt och vill ha ren filorganisation

För små redigeringar är metoden överdriven; villkorsstaggen is_front_page() räcker gott.

Möjliga fel och hur du undviker dem

Anrop före frågeinitiering. Det vanligaste problemet: is_front_page() i functions.php utan en hook. Funktionen returnerar tyst false, och du antar att koden är trasig. Lösning: slå alltid in kontrollen 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}

Förvirring kring läsinställningar. Om du bytte webbplatsen från en statisk startsida till flödet för senaste inlägg och glömde bort det, körs is_home() plötsligt där den inte ska. Kontrollera Inställningar → Läsa först.

Hårdkodning av sid-ID. Vissa utvecklare kontrollerar if ( get_the_ID() == 5 ) istället för is_front_page(). Detta är skört: ändra startsidan i inställningarna, så går allt sönder. Använd villkorsstaggar; de följer inställningarna automatiskt.

Ämnet WordPress villkorsstaggar behandlas mer ingående i denna video, från is_page() till anpassade villkor för icke-standardmallar. Om du arbetar med teman regelbundet kommer 15 minuters tittande att spara timmar av felsökning i framtiden.

⁉️🤔 Vanliga frågor

Vad ska man välja: is_front_page() eller is_home()?

I de flesta fall is_front_page(). Den returnerar true på webbplatsens framsida oavsett om det är en statisk sida eller inläggsflödet. Använd is_home() endast när du specifikt behöver bloggsidan (till exempel /blog/), inte startsidan.

Kan båda taggarna användas samtidigt?

Ja, konstruktionen if ( is_home() && ! is_front_page() ) returnerar true endast på bloggsidan när den inte är startsidan. Användbart för webbplatser med en statisk startsida och en separat inläggssektion.

Fungerar is_front_page() med caching-plugins?

Ja, men med en brasklapp. Villkorsstaggar körs på serversidan innan HTML-leverans; cache-plugins (WP Rocket, W3 Total Cache) påverkar inte detta. Med ESI-block (Edge Side Includes) bör du dock kontrollera att ditt cache-plugin stöder dem.

Hur visar jag olika innehåll på startsidan för inloggade och utloggade användare?

Kombinera is_front_page() med is_user_logged_in(). För inloggade användare, en personlig hälsning; för gäster, en registrerings-CTA. Koden tar fem rader och placeras 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; ?>

Behöver ett barntema egna header-home.php-filer?

Om föräldratemat redan innehåller header-home.php ärver barntemat den automatiskt. För att åsidosätta, skapa en fil med samma namn i barntemats mapp. WordPress söker efter mallen i barntemat först och först därefter i föräldratemat.

Vad man ska använda 2026: en villkorsstagg eller en separat fil?

Valet handlar om uppgiftens omfattning. Kom ihåg en enkel regel: en rad kod eller ett HTML-block, använd is_front_page(). Om ett helt strukturellt block (sidopanel, sidfot, sidhuvud) med egen märkning och logik förändras, skapa separata mallfiler.

I praktiken hanteras de flesta uppgifter för startsidespecifikt innehåll med två rader av en villkorsstagg. Det är snabbt, skapar inga extra filer i temat och är lättläst när du underhåller webbplatsen ett halvår senare: du behöver inte gissa varför du skapade sidebar-home.php eftersom du ser den explicita kontrollen direkt i mallen.

Testa det nu: öppna ditt aktiva temas header.php, hitta stället efter <body> och lägg till ett testblock med is_front_page(). Om allt fungerar har du bemästrat WordPress villkors-taggar på fem minuter.