Vil du style alle sider under /services/ annerledes? Lær hvordan du injiserer forelder-slugs i WordPress body_class()-funksjonen.
NB

Legge til forelder-side-slug i body-klasser (WordPress-snutt)

5.00 /5 - (31 votes )
Sist verifisert: 1. mars 2026
Erfaring: 5+ års erfaring
Innholdsfortegnelse

WordPress-temaer bruker body_class() for å legge til nyttige CSS-klasser i <body>-taggen. Som standard indikerer det imidlertid ikke tydelig om en side er et barn av en bestemt forelderseksjon.

Hvis du har en struktur som:

  • /services/
  • /services/web-design/
  • /services/seo/

Du vil kanskje style alle sider under “Services” med en blå bakgrunn. Standardklassene som page-id-123 er irriterende å vedlikeholde.

Problemet: Begrenset CSS-målretting

WordPress sin standard body_class()-funksjon legger til klasser som:

  • page-id-123 (numerisk, vanskelig å huske)
  • page-template-default (generisk)
  • page (for bred)

Men den forteller deg ikke:

  • Hvilken seksjon siden tilhører
  • Sidehierarkiet (forelder/barn-forhold)
  • Sidesluggen (lesbar identifikator)

Dette gjør CSS-målretting vanskelig. Du ender opp med kode som:

/* Dårlig: Vanskelig å vedlikeholde */
.page-id-123,
.page-id-124,
.page-id-125 {
    background: blue;
}

Hver gang du legger til en ny side, må du oppdatere CSS-en din. Dette skalerer ikke.

Løsningen: Legg til forelder-slugs i body-klasser

Ved å legge til forelder-side-slugs i body-klassen, kan du målrette hele seksjoner med en enkelt CSS-regel. Dette gjør stilarket ditt vedlikeholdbart og skalerbart.

Den fullstendige snutten

Legg til denne forbedrede versjonen i din functions.php:

/**
 * Add page slugs and parent slugs to body classes
 * 
 * Adds:
 * - Current page slug
 * - Parent page slug (if exists)
 * - Grandparent page slug (if exists)
 * - All ancestor slugs
 * 
 * @param array $classes Existing body classes
 * @return array Modified classes array
 */
function wppoland_add_slug_body_class( $classes ) {
    global $post;
    
    if ( ! isset( $post ) || ! is_page() ) {
        return $classes;
    }
    
    // 1. Add current page slug
    $classes[] = 'page-slug-' . sanitize_html_class( $post->post_name );
    
    // 2. Add parent page slug (if exists)
    if ( $post->post_parent ) {
        $parent = get_post( $post->post_parent );
        if ( $parent ) {
            $classes[] = 'parent-' . sanitize_html_class( $parent->post_name );
            
            // 3. Add grandparent slug (if exists)
            if ( $parent->post_parent ) {
                $grandparent = get_post( $parent->post_parent );
                if ( $grandparent ) {
                    $classes[] = 'grandparent-' . sanitize_html_class( $grandparent->post_name );
                }
            }
            
            // 4. Add all ancestor slugs (recursive)
            $ancestors = get_post_ancestors( $post->ID );
            foreach ( $ancestors as $ancestor_id ) {
                $ancestor = get_post( $ancestor_id );
                if ( $ancestor ) {
                    $classes[] = 'ancestor-' . sanitize_html_class( $ancestor->post_name );
                }
            }
        }
    }
    
    // 5. Add template hierarchy classes
    $template = get_page_template_slug( $post->ID );
    if ( $template ) {
        $template_slug = str_replace( '.php', '', basename( $template ) );
        $classes[] = 'template-' . sanitize_html_class( $template_slug );
    }
    
    return $classes;
}
add_filter( 'body_class', 'wppoland_add_slug_body_class' );

Resultat: Forbedrede body-klasser

Nå vil din <body>-tag inkludere:

<body class="page page-id-123 page-slug-web-design parent-services ancestor-services ...">

Klasser lagt til:

  • page-slug-web-design - Nåværende sideslug
  • parent-services - Direkte forelderslug
  • grandparent-company - Besteforelderslug (hvis den finnes)
  • ancestor-services - Alle aneslugs
  • template-custom - Malfilnavn (hvis tilpasset)

Eksempler på bruk

Eksempel 1: Style alle services-sider

/* Blå bakgrunn for ALLE services-sider */
body.parent-services {
    background-color: #eef;
}

/* Spesifikk styling for services-overskrift */
body.parent-services .site-header {
    background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
}

Eksempel 2: Ulike layouter per seksjon

/* Full bredde layout for dokumentasjon */
body.parent-documentation .content-area {
    max-width: 100%;
    padding: 0;
}

/* Sidebar layout for blogg */
body.parent-blog .content-area {
    max-width: 1200px;
    display: grid;
    grid-template-columns: 2fr 1fr;
    gap: 2rem;
}

Oppsummering

Å legge til forelder-side-slugs i body-klasser er en enkel, men kraftig teknikk som gjør CSS-målretting skalerbar og vedlikeholdbar. I stedet for å vedlikeholde lister over side-IDer, kan du målrette hele seksjoner med en enkelt klasse.

Fordeler:

  • ✅ Skalerbar: Fungerer automatisk for nye sider
  • ✅ Vedlikeholdbar: En CSS-regel for hele seksjoner
  • ✅ Semantisk: Lesbare klassenavn
  • ✅ Fleksibel: Fungerer med alle temaer
Hva er Legge til forelder-side-slug i body-klasser (WordPress-snutt)?
Legge til forelder-side-slug i body-klasser (WordPress-snutt) er et viktig aspekt ved administrasjon av WordPress-nettsider som bidrar til å forbedre nettstedets ytelse, sikkerhet og brukeropplevelse.
Hvordan fungerer Legge til forelder-side-slug i body-klasser (WordPress-snutt)?
Legge til forelder-side-slug i body-klasser (WordPress-snutt) innebærer å konfigurere ulike innstillinger og implementere beste praksis for å optimalisere din WordPress-nettside.
Hvorfor er Legge til forelder-side-slug i body-klasser (WordPress-snutt) viktig for WordPress?
Legge til forelder-side-slug i body-klasser (WordPress-snutt) er avgjørende fordi det direkte påvirker nettstedets søkemotorrangering, lastehastighet og generelle suksess.

Trenger du FAQ tilpasset bransje og marked? Vi lager en versjon som støtter dine forretningsmål.

Ta kontakt

Relaterte artikler