Skip to content

Alt om WordPress, webutvikling — og mer til

🔖 Slik aktiverer du stikkord på WordPress-sider

🔖 Slik aktiverer du stikkord på WordPress-sider

WordPress-sider støtter ikke stikkord ut av boksen, og dette er irriterende helt til du forstår hvorfor det er gjort slik. En side i WordPress er teknisk sett en egendefinert innholdstype som taksonomien post_tag rett og slett ikke er knyttet til. Kjerneutviklerne beholdt stikkord kun for innlegg, og behandlet sider som statisk innhold.

Men i praksis kan denne begrensningen omgås på fem minutter. To metoder: en kodelinje i functions.php eller en mikro-plugin som du kan aktivere og deaktivere uten å redigere temaet ditt. Nedenfor finner du begge alternativene med en forklaring på hva som faktisk skjer under panseret.

💡 Rask oversikt:

  • Registrer post_tag-taksonomien for innholdstypen page ved hjelp av en enkelt funksjon register_taxonomy_for_object_type

  • Legg til stikkordstøtte i arkiver via pre_get_posts-hooken slik at sider vises i stikkordsøkeresultater

  • Koden fungerer for alle egendefinerte innholdstyper; bare gjenta kallet med ønsket typenavn

  • Alt pakkes inn i en separat plugin på ett minutt: fil → plugin-header → kode → aktivering

Hvorfor stikkord på sider

Stikkord er ikke bare en skymeny i sidefeltet. De er en navigasjonsakse som knytter spredte sider sammen i tematiske grupper raskere enn kategorier eller menyer.

WordPress-sider formerer seg ofte: kontakter, retningslinjer, vilkår, tjenestelandingssider, porteføljer, dokumentasjon. Uten stikkord er forbindelsen mellom dem utelukkende avhengig av manuelle lenker i teksten. Med stikkord havner en enkelt «Frakt»-side automatisk i «logistikk»-gruppen ved siden av «Retur»-siden, og besøkende klikker på stikkordet for å se alt relatert.

For SEO gir stikkord på sider ekstra internlenking og reduserer fluktfrekvensen: brukere forlater ikke nettstedet etter første side, men dykker ned i en tematisk samling. I tillegg havner stikkord i nettstedskartet, noe som hjelper søkemotorer med å forstå strukturen bedre.

Metode 1: kode i functions.php

Den mest direkte veien er å legge til en kodesnutt i functions.php-filen til ditt aktive tema. Åpne wp-content/themes/DITT_TEMA/functions.php og lim inn koden før den avsluttende ?> eller helt på slutten av filen:

1/**
2 * Add tag support to WordPress pages.
3 * Code — in functions.php of child theme or via Code Snippets plugin.
4 */
5function sdstudio_add_tags_to_pages() {
6 register_taxonomy_for_object_type( 'post_tag', 'page' );
7}
8add_action( 'init', 'sdstudio_add_tags_to_pages' );
9
10/**
11 * Include pages in tag archive queries.
12 * Without this, pages won't appear on /tag/tag-name/
13 */
14function sdstudio_pages_in_tag_archives( $wp_query ) {
15 if ( $wp_query->get( 'tag' ) ) {
16 $wp_query->set( 'post_type', 'any' );
17 }
18}
19add_action( 'pre_get_posts', 'sdstudio_pages_in_tag_archives' );

Her er hva som skjer. Funksjonen register_taxonomy_for_object_type() kobler den eksisterende post_tag-taksonomien til innholdstypen page. Dette er en kjernefunksjon i WordPress; dokumentasjon på developer.wordpress.org. Den oppretter ikke en ny taksonomi, men legger bare til relasjonen «sider → stikkord».

pre_get_posts-hooken endrer SQL-spørringen før den kjøres. Når WordPress bygger en stikkordarkivside (/tag/name/), søker den som standard bare etter innlegg av typen post. Linjen $wp_query->set( 'post_type', 'any' ) utvider utvalget til alle typer: sider, innlegg, egendefinerte typer.

Etter at du har satt inn koden, gå til en hvilken som helst side, så vil en «Stikkord»-blokk dukke opp i sidefeltet akkurat som i vanlige innlegg. Det fungerer umiddelbart; ingen grunn til å tømme hurtigbufferen.

Tilpasning for egendefinerte innholdstyper

Hvis du har egendefinerte innholdstyper (CPT) som porteføljer, attester eller produkter som også trenger stikkord, legg til samme antall register_taxonomy_for_object_type()-kall inne i init-funksjonen din:

1register_taxonomy_for_object_type( 'post_tag', 'portfolio' );
2register_taxonomy_for_object_type( 'post_tag', 'testimonials' );

CPT-navnet er det andre argumentet, det samme som ble spesifisert ved registrering av typen via register_post_type(). Ingen ytterligere redigeringer av pre_get_posts er nødvendig: 'any' inkluderer allerede alle registrerte typer.

Metode 2: en separat plugin

Å redigere functions.php direkte er en fungerende løsning, men skjør. Bytt tema, så forsvinner koden og tar stikkord på sider med seg. For de som administrerer flere nettsteder eller ofte bytter tema, er det mer pålitelig å flytte kodesnutten inn i en separat plugin.

Opprett filen wp-content/plugins/sdstudio-tags-for-pages.php med dette innholdet:

1<?php
2/**
3 * Plugin Name: Tags for Pages
4 * Description: Enables post tags on WordPress pages and custom post types
5 * Version: 1.0
6 * Author: SDStudio
7 * License: GPL-2.0+
8 */
9
10// Direct access — forbidden
11if ( ! defined( 'ABSPATH' ) ) {
12 exit;
13}
14
15// Tags → pages
16function sdstudio_tags_for_pages() {
17 register_taxonomy_for_object_type( 'post_tag', 'page' );
18}
19add_action( 'init', 'sdstudio_tags_for_pages' );
20
21// Pages → tag archive
22function sdstudio_pages_in_tag_queries( $wp_query ) {
23 if ( ! is_admin() && $wp_query->is_main_query() && $wp_query->get( 'tag' ) ) {
24 $wp_query->set( 'post_type', 'any' );
25 }
26}
27add_action( 'pre_get_posts', 'sdstudio_pages_in_tag_queries' );

Forskjellen fra den første metoden er sjekken ! is_admin() && $wp_query->is_main_query(). Den sikrer at admin-spørringer ikke påvirkes: pre_get_posts utløses overalt, inkludert sidelisten i dashbordet, og uten denne sjekken kan du få uventet admin-oppførsel ved filtrering.

Filen er klar; gå til Utvidelser, finn «Tags for Pages» og aktiver den. Det er alt. Når du bytter tema forblir utvidelsen aktiv og stikkord forsvinner ikke. På multisite kan utvidelsen aktiveres per nettsted eller nettverksaktiveres for hele nettverket.

Metode 3: ferdige utvidelser fra katalogen

Hvis du ikke vil skrive kode, håndterer ferdige løsninger fra WordPress.org oppgaven. De legger ikke bare til stikkord, men også kategorier for sider, pluss et administrasjonsgrensesnitt.

Add Categories to Pages er en lettvektsutvidelse som aktiverer både kategorier og stikkord for sider med én enkelt avkrysningsboks. Ingen innstillinger, ingen annonser. Passer når du bare trenger at ting skal fungere uten ekstra skjermbilder.

Her er en videodemonstrasjon av å legge til stikkord på sider via kode og via utvidelse, 4 minutter, alle trinn vises i sanntid:

Hovedpoeng: tredjepartsutvidelser bringer med seg ekstra kode og hooks. Hvis nettstedet ditt allerede er lastet med et dusin utvidelser, er én til ett feilpunkt til. Koden fra metode 1 og 2 veier bare noen få bytes og legger ikke til databasespørringer utover de standard.

⁉️🤔 Ofte stilte spørsmål

Fungerer dette på multisite? Ja, koden er universell. Du kan aktivere utvidelsen per nettsted eller aktivere den nettverksomfattende via «Nettverksaktiver».

På WordPress multisite fungerer koden identisk på alle nettsteder i nettverket. Funksjonen register_taxonomy_for_object_type() er bundet til post_tag-taksonomien, som eksisterer separat på hvert nettsted i nettverket, så stikkord overlapper ikke mellom nettsteder. For hvert undernettsted aktiveres stikkord på sider uavhengig: aktiver utvidelsen på ett nettsted, så vises stikkord bare der.

Må jeg oppdatere penkoblinger etter å ha satt inn koden? Nei, URL-strukturen endres ikke. Stikkord på sider legger ikke til nye omskrivningsregler.

WordPress lagrer «side, stikkord»-relasjonen i wp_term_relationships-tabellen, den samme som brukes for innlegg. Ingen omskrivningsregler påvirkes: stikkordarkivet eksisterer allerede (/tag/name/), og pre_get_posts inkluderer ganske enkelt sider i spørringen sin. Ingen grunn til å røre penkoblinger; alt fungerer umiddelbart etter aktivering av koden.

Vil stikkord forsvinne ved temabytte? Det avhenger av metoden. Kode i temaets functions.php vil føre til at de forsvinner. Kode i en utvidelse eller Code Snippets vil bevare dem.

Ved temabytte laster WordPress en ny functions.php, så kodesnutten fra det gamle temaet slutter å kjøre og stikkord-metaboksen på sider forsvinner. «Side, stikkord»-relasjonene i databasen slettes imidlertid ikke. Bare gjenopprett koden (i det nye temaet eller via utvidelse), så dukker alle tidligere tildelte stikkord opp igjen i admin.

Kan jeg tildele stikkord programmatisk ved import av sider? Ja, via wp_set_object_terms( $page_id, array( 'tag1', 'tag2' ), 'post_tag' ).

Funksjonen wp_set_object_terms() aksepterer en side-ID, en matrise med stikkordnavn og taksonominavnet. Hvis et stikkord med det navnet ikke eksisterer, vil WordPress opprette det automatisk. Dette er praktisk under migrering: et skript går gjennom alle sider og tildeler stikkord fra en CSV-fil eller et gammelt CMS. Det er viktig å kjøre skriptet etter init, ellers er ikke taksonomien registrert ennå.

Hva med stikkordskyen: vil sider vises i den? Ja, standard «Stikkordsky»-widget vil plukke opp stikkord fra sider uten ekstra konfigurasjon.

wp_tag_cloud()-widgeten samler som standard alle objekter av post_tag-taksonomien, uavhengig av innholdstype. Så snart en side har minst ett stikkord, kommer den inn i skyen på lik linje med innleggsstikkord. Frekvens beregnes også korrekt: et stikkord på tre sider og to innlegg gir en vekt på «5» og vises større.

Hva du bør velge: kode eller utvidelse

Det konkrete valget avhenger av ditt scenario, ikke av et «riktig svar».

Eiere av enkeltsider som ikke bytter tema på årevis, vil finne en kodesnutt i functions.php tilstrekkelig: kopier, lim inn, ferdig. Frilansere med et dusin kundenettsteder synes en utvidelse er mer praktisk: send zip-filen til kunden eller aktiver på et nytt prosjekt på sekunder. De som allerede bruker Code Snippets eller WPCodeBox kan ganske enkelt legge til kodesnutten i samlingen sin; den går ikke tapt ved temaoppdateringer og krever ikke en separat utvidelse.

Hvis du trenger mer enn stikkord (kategorier, egendefinerte taksonomier, avansert filtrering), se på ferdige utvidelser fra WordPress.org. Men for oppgaven «aktivere stikkord på sider» er syv linjer med kode nok. Alt annet er overkill.

Deretter setter du opp stikkordstrukturen din: tenk gjennom 5-7 nøkkelemner for sider og tildel dem. Om en måned vil stikkordskyen vise hvilke nettstedemner som er sterkest forbundet.