Skip to content

Alt om WordPress, webutvikling — og mer til

🔧 Slik tilpasser du WordPress-overskrifter: 4 teknikker med functions.php

🔧 Slik tilpasser du WordPress-overskrifter: 4 teknikker med functions.php

Overskrifter i WordPress er mer enn bare tekst øverst på en side. De jobber for deg i fire retninger samtidig: SEO (tittel-tag i søkeresultatene), navigasjon (nettleserfane), design (visuelt hierarki på siden) og redaksjonell kontroll (hva forfattere skriver). Men standardinnstillingene i administrasjonspanelet dekker bare det grunnleggende; finjustering krever kode.

Problemet blir verre når flere forfattere jobber på et nettsted. Én skriver overskrifter på 120 tegn og ødelegger layouten. En annen bruker ord partneren din har forbudt i kontrakten. En tredje glemmer at sidetittelen i søkeresultatet og på nettstedet er to separate felt. Du kan ikke holde oversikt over alle manuelt.

Nedenfor finner du fire spesifikke teknikker for å konfigurere WordPress-overskrifter via functions.php. Hver løser sin egen oppgave: fra automatisk lengdeavkorting til programmatisk blokkering av stoppord. Koden bruker dokumenterte WordPress-filtre og er testet på WP 6.x. Til slutt finner du en FAQ-del om emnet.

💡 Rask oversikt:

  • Begrens overskriftslengde automatisk via the_title-filteret slik at forfattere ikke kan ødelegge layouten
  • Endre justering av innleggsoverskrifter gjennom single.php uten utvidelser eller CSS-endringer
  • Blokker publisering av innlegg med forbudte ord via transition_post_status-kroken
  • Endre skilletegnet i tittel-taggen og legg til egendefinerte titler via metabokser

Hvordan begrense lengden på WordPress-overskrifter

En lang overskrift kan ødelegge selv den mest nøye utformede layouten. På forsiden der utdrag vises, flyter en overskrift på 120 tegn ut av kortet, og designet ser ødelagt ut. Dette rammer nettsteder med flerkolonne-oppsett spesielt hardt.

Løsningen er the_title-filteret, som avkorter overskriften til en angitt grense når den vises på siden. Den faktiske posten i databasen forblir urørt; bare den viste teksten forkortes.

Kode for functions.php:

1function sdstudio_limit_title_length( $title ) {
2 $max = 60;
3 if ( mb_strlen( $title ) > $max ) {
4 return mb_substr( $title, 0, $max ) . ' …';
5 }
6 return $title;
7}
8add_filter( 'the_title', 'sdstudio_limit_title_length' );

Her er hva som skjer: mb_strlen teller tegn korrekt for kyrillisk (i motsetning til strlen, som teller byte). Når grensen på 60 tegn overskrides, avkortes overskriften og en ellipse legges til på slutten slik at leserne forstår at dette ikke er hele teksten. Du kan erstatte 60 med et hvilket som helst annet tall for å passe din layout.

Hvor bør det brukes selektivt? Hvis du bare trenger å avkorte overskrifter på et bestemt sted (for eksempel i en widget for populære innlegg), pakker du add_filter inn i en betinget tag:

1if ( is_home() || is_front_page() ) {
2 add_filter( 'the_title', 'sdstudio_limit_title_length' );
3}

Samme tilnærming fungerer for is_archive(), is_category() og enhver annen kontekst.

Hvordan endre justering av innleggsoverskrifter

WordPress-temaer varierer. Noen tilbyr justeringsalternativer i tilpasseren; andre gjør det ikke. Hvis temaet ditt faller i den andre kategorien, er overskriften som standard venstrejustert, og du vil ikke finne en innstilling for dette i administrasjonspanelet.

Overskriftsjustering angis i single.php-malen, filen som er ansvarlig for å vise enkeltinnlegg. Det er bare fire trinn:

WordPress theme editor single.php with heading alignment code
  • Åpne Utseende → Temaredigering (eller single.php-filen via FTP/hostingpanel)
  • Finn linjen <?php the_title(); ?>, som skriver ut overskriften
  • Pakk den inn i en tag med ønsket justering

Venstrejustering (standard):

1<?php the_title(); ?>

Midtstilt:

1<div style="text-align: center;"><?php the_title(); ?></div>

Høyrejustert:

1<div style="text-align: right;"><?php the_title(); ?></div>
  • Lagre filen og åpne et hvilket som helst innlegg; overskriften vil vises i den angitte posisjonen

Denne metoden er grunnleggende, men fungerer for ethvert tema. En renere tilnærming er å legge til en CSS-klasse via body_class-filteret og style gjennom stilarket, men for en rask løsning er innebygde stiler tilstrekkelig.

Hvordan blokkere uønskede ord i overskrifter

En tekstadvarsel til forfattere («vennligst ikke bruk ordet X i overskrifter») fungerer frem til den første glemte tidsfristen. Før eller siden vil noen publisere en overskrift med en forbudt frase, og i beste fall blir innlegget sett internt; i verste fall vil en partner eller konkurrent se det.

Programmatisk blokkering løser problemet radikalt: WordPress forhindrer rett og slett publisering av innlegget hvis overskriften inneholder et stoppord. Forfatteren ser en feilmelding og må fikse teksten før publisering.

Functions.php code for blocking forbidden words in WordPress headings

Kode for functions.php:

1function sdstudio_block_forbidden_title_words( $new_status, $old_status, $post ) {
2 if ( 'publish' !== $new_status || 'publish' === $old_status ) {
3 return;
4 }
5
6 $restricted = array( 'word1', 'word2', 'word3' );
7 $title = $post->post_title;
8
9 foreach ( $restricted as $word ) {
10 if ( mb_stripos( $title, $word ) !== false ) {
11 wp_die( 'Ошибка: заголовок содержит запрещённое слово — «' . esc_html( $word ) . '». Измените заголовок и попробуйте снова.' );
12 }
13 }
14}
15add_action( 'transition_post_status', 'sdstudio_block_forbidden_title_words', 10, 3 );

Slik fungerer det: transition_post_status-hooken kjøres ved ethvert statusbytte for et innlegg. Vi sjekker at den nye statusen er publish og at den gamle statusen ikke er publish (ellers ville hver oppdatering av et allerede publisert innlegg også bli blokkert). Deretter søker mb_stripos etter hvert stoppord uten hensyn til store og små bokstaver i overskriften. Hvis et ord blir funnet, stopper wp_die publiseringen med en tydelig melding.

For å legge til ditt eget ord, erstatt word1, word2, word3 i $restricted-arrayen. Du kan legge til så mange ord du trenger; funksjonen vil iterere gjennom alle.

Bonus: vis forfatterne listen over forbudte ord rett under tittelfeltet. Legg til denne koden i den samme functions.php:

1function sdstudio_show_restricted_words_notice() {
2 $restricted = array( 'word1', 'word2', 'word3' );
3 echo '<div style="color:#856404;background:#fff3cd;padding:6px 12px;margin:8px 0;border-radius:4px;font-size:13px;">';
4 echo 'Запрещённые слова в заголовке: <strong>' . implode( ', ', $restricted ) . '</strong>';
5 echo '</div>';
6}
7add_action( 'edit_form_after_title', 'sdstudio_show_restricted_words_notice' );

Nå er listen over stoppord synlig over redigeringsprogrammet, slik at forfatterne slipper å gjette hva som er forbudt.

Tittelseparator og egendefinerte tittel-tagger

Tittelseparatoren er symbolet mellom nettstedsnavnet og innleggstittelen i <title>. I søkeresultater vises den som «Nettstedsnavn | Innleggstittel» eller «Nettstedsnavn - Innleggstittel». Dette påvirker ikke klikkfrekvensen direkte, men det skiller utdraget ditt visuelt fra andre.

Siden WordPress 4.4 endres separatoren via document_title_separator-filteret. Koden er bare tre linjer:

1function sdstudio_change_title_separator( $separator ) {
2 return '|';
3}
4add_filter( 'document_title_separator', 'sdstudio_change_title_separator' );

Du kan erstatte symbolet på den tredje linjen med et hvilket som helst tegn: vertikal strek, bindestrek, større-enn-tegn, midtstilt punktum. Ikke bruk spesialtegn som ★ eller →; Google viser dem ikke, og utdraget ditt i søkeresultatene vil se rotete ut.

For versjoner eldre enn WordPress 4.4: wp_title-funksjonen er utdatert, men hvis nettstedet ditt fortsatt er på en eldre versjon, oppdater først (dette er et sikkerhetsspørsmål), og juster deretter separatoren. Den gamle koden som bruker wp_title finnes i WordPress-dokumentasjonen som historisk referanse, men anbefales ikke.

Slik setter du en egendefinert tittel-tagg for et enkelt innlegg

Det finnes situasjoner der tittel-taggen for SERP bør avvike fra H1-overskriften på siden. SEO-plugins (Yoast, Rank Math) tilbyr et eget felt for dette. Men hvis du ikke bruker en SEO-plugin, løses oppgaven med et egendefinert felt og pre_get_document_title-filteret.

Kode for functions.php:

1function sdstudio_custom_title_from_meta( $title ) {
2 if ( is_singular() ) {
3 $custom = get_post_meta( get_the_ID(), 'custom_post_title', true );
4 if ( $custom ) {
5 return esc_html( $custom );
6 }
7 }
8 return $title;
9}
10add_filter( 'pre_get_document_title', 'sdstudio_custom_title_from_meta', 20 );

Slik bruker du det:

  • Åpne innlegget som trenger en egendefinert <title>
  • I «Egendefinerte felt»-blokken (hvis du ikke ser den, aktiver den i «Skjerminnstillinger») oppretter du et felt med navnet custom_post_title
  • Skriv inn ønsket tittel-tagg som verdi, for eksempel «Gjennomgang av hurtigbuffer-plugin 2026, sammenligning og tester»
  • Lagre innlegget

Hvis det egendefinerte feltet ikke er fylt ut, bruker WordPress standard tittel-tagg (innleggstittel + separator + nettstedsnavn). Mekanismen fungerer bare for enkeltsider (is_singular); overskrifter på arkivsider og i administrasjonsområdet påvirkes ikke.

Viktig merknad: pre_get_document_title har prioritet 20, noe som sikrer at filteret kjøres ETTER standard titteldannelse og overstyrer den.

Se videoen på 6 minutter om emnet; den viser den visuelle prosessen med å konfigurere tittel-tagger gjennom WordPress-administrasjonen og SEO-plugins.

⁉️🤔 Ofte stilte spørsmål

Virker koden fra denne artikkelen på WordPress 6.x (den gjeldende versjonen på wordpress.org)?

Ja, all kode er testet på den gjeldende WordPress-versjonen. Filtreringsfunksjonene the_title, document_title_separator og pre_get_document_title har vært en del av WordPress-kjernen siden versjon 4.4-5.0 og støttes fullt ut i WP 6.x. Den eneste endringen fra eldre veiledninger: den utdaterte publish_post-kroken er erstattet med transition_post_status.

Bør jeg redigere barne-temaets functions.php eller kan jeg bruke hovedtemaet?

Rediger alltid barne-temaet. Hvis du redigerer hovedtemaets functions.php, vil alle endringer gå tapt ved neste oppdatering. Hvis du ikke har et barne-tema, opprett ett: det tar fem minutter via Child Theme Configurator-pluginen eller manuelt (en style.css-fil + en functions.php-fil med Template:-direktivet).

Kan jeg oppnå samme resultat med pluginer i stedet for kode?

Delvis. For SEO-titler finnes Yoast SEO og Rank Math. For lengdebegrensning finnes det pluginer som Title Length Limiter, men støtten for dem er upålitelig. For blokkering av ord og endring av skilletegn finnes det ingen standardpluginer; kun kode fungerer. I tillegg gjør hver ekstra plugin nettstedet tregere, mens fire linjer i functions.php ikke gir noen merkbar belastning.

Hva bør jeg gjøre hvis nettstedet viser en hvit skjerm etter redigering av functions.php?

Koble til serveren via FTP eller gjennom vertskapets filbehandler, åpne functions.php og slett koden du la til. Hvis du ikke har FTP-tilgang, gå til phpMyAdmin, finn wp_options-tabellen, raden active_plugins, og deaktiver alle pluginer midlertidig (dette tømmer hurtigbufferen). For fremtiden: før enhver redigering av functions.php, aktiver WP_DEBUG i wp-config.php; da vil du se feilteksten i stedet for en hvit skjerm.

Påvirker tittelskilletegnet SEO?

> Det har ingen direkte effekt på rangeringer; Google vurderer ikke om du bruker | eller -. Det er en indirekte effekt: Google kan velge å ikke vise ikke-standard skilletegn (, ), og utdraget ditt i søkeresultatene vil se dårligere ut visuelt. I tillegg bygger et gjenkjennelig skilletegn merkevaregjenkjenning: brukere blir vant til formatet «Merkevare | Tittel» og legger merke til resultatene dine i SERP raskere.

Hva du bør implementere og i hvilken rekkefølge

De fire teknikkene ovenfor dekker alle hovedscenarier for arbeid med WordPress-overskrifter. Implementeringsrekkefølgen går fra enkel til kompleks:

Først endrer du skilletegnet i tittel-taggen; dette er tre linjer med kode med umiddelbare resultater i søkeresultatene. Deretter konfigurerer du tilpassede <title>-tagger via metafelter hvis nettstedet ditt har nøkkelsider som trenger separate SERP-titler. Etter det implementerer du lengdefilteret; det vil beskytte layouten mot for lange overskrifter uten noen handling fra forfatterne. Til slutt legger du til stoppordblokkeringen når listen over forbudte fraser er avtalt og godkjent.

Før enhver redigering av functions.php, ta sikkerhetskopi av filen: kopier innholdet til et tekstredigeringsprogram og lagre lokalt. Dette tar ti sekunder og vil spare deg for timer med gjenoppretting ved en eventuell feil.