
🖥 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()→truepå den statiska sida du angav som startsidais_home()→truepå 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" |
|
|
Startsida = statisk sida (besökare på | Statisk sida + separat bloggsida |
|
|
Bloggsida = | Statisk sida + separat bloggsida |
|
|
Vilken annan sida eller inlägg som helst | Alla inställningar |
|
|
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 startsidanfooter-home.php, en sidfot för startsidanheader-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.phpoch 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:
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 }
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 returnerartruepå webbplatsens framsida oavsett om det är en statisk sida eller inläggsflödet. Användis_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() )returnerartrueendast 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()medis_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 iheader.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.



