Skip to content

Alt om WordPress, webutvikling — og mer til

🚀 Hvordan opprette en arkivside for egendefinerte innleggstyper i WordPress

🚀 Hvordan opprette en arkivside for egendefinerte innleggstyper i WordPress

Når et nettsted vokser seg større enn «blogg pluss noen få sider»-stadiet, er ikke lenger standardinnlegg og kategorier nok. Porteføljer, team, attester, case-studier, stillingsannonser: alt dette ønsker å leve i sin egen struktur i stedet for å bli presset inn i den generelle innleggsstrømmen med kategoriløsninger.

WordPress løser dette problemet gjennom egendefinerte innleggstyper. Men å opprette en CPT er ikke nok; du trenger også en side der alle oppføringer av den typen er samlet: en arkivside. Uten den vil de besøkende rett og slett ikke se portefølje-elementene eller teammedlemmene dine vist som en samlet blokk.

Rutenett-plugins som Essential Grid håndterer den visuelle siden, men de legger til ekstra CSS og JS. På små prosjekter går dette upåaktet hen, men på et nettsted med titusenvis av besøkende teller hver kilobyte. Den innebygde arkivmekanismen i WordPress gir samme funksjonalitet uten frontend-overhead, og det tar bare 10 minutter å konfigurere.

💡 Rask oversikt:

  • Opprett en egendefinert innleggstype via CPT UI og aktiver arkivstøtte i innstillingene med en gang
  • Skriv en egendefinert mal for presis layoutkontroll om nødvendig
  • Konfigurer SEO-metadata via Yoast SEO: tittel, beskrivelse og og:image for arkivsiden
  • Deaktiver sidepanelet og legg til Open Graph-markering om nødvendig

1. Opprette en egendefinert innleggstype

Den enkleste og mest pålitelige måten å registrere en CPT uten en eneste linje kode, er pluginen Custom Post Type UI. Den er installert på over en million nettsteder og har vært vedlikeholdt siden 2010, og grensesnittet er intuitivt: skjemafeltene samsvarer én-til-én med argumentene til funksjonen register_post_type().

Custom Post Type UI-pluginens side i WordPress-depotet

Etter at du har installert pluginen, gå til CPT UI → Add/Edit Post Types. Fyll ut minimum:

  • Post Type Slug: latinske tegn, ingen mellomrom (for eksempel portfolio)
  • Plural Label: «Portfolio»
  • Singular Label: «Work»

Du kan la resten av innstillingene stå på standardverdiene; standardverdiene dekker de aller fleste typiske scenarioer. Klikk Add Post Type, og den nye typen vil dukke opp i administrasjonspanelet som et eget menyelement.

2. Konfigurere arkivsiden

For at oppføringer av den nye typen skal samles på en egen side, må du eksplisitt aktivere arkivstøtte. Den er deaktivert som standard.

Gå til CPT UI → Edit Post Types og velg typen du opprettet fra listen:

Redigeringsside for egendefinerte innholdstyper i CPT UI

Bla ned til Settings-delen og fyll ut to nøkkelfelt:

Felt for Has Archive og Custom Rewrite Slug i CPT UI
  • Has Archive: sett til True. Dette er bryteren for arkivsiden.
  • Custom Rewrite Slug: sluggen der arkivet vil være tilgjengelig. Samsvarer vanligvis med innleggstype-sluggen (for eksempel portfolio).

Lagre endringene og naviger til http://YOUR_SITE/portfolio. Du vil se en liste over alle oppføringer av denne typen, stylet med standardmalen archive.php til det aktive temaet:

Eksempel på arkivside for den egendefinerte innholdstypen portfolio

Grunnsiden er klar. Hvis standardutseendet er tilstrekkelig, kan du stoppe her. Men i de fleste tilfeller vil du ønske å finpusse utseendet.

3. Egendefinert archive-{posttype}.php-mal

WordPress bruker et tydelig malhierarki. Når en besøkende lander på en CPT-arkivside, ser kjernen etter filer i denne rekkefølgen:

  • archive-{posttype}.php
  • archive.php
  • index.php

Dette betyr at du bare trenger å opprette en fil med navnet archive-portfolio.php (der portfolio er innleggstype-sluggen din), så plukker WordPress den opp automatisk.

Trinn:

Kopier innholdet i temaets archive.php inn i en ny fil archive-portfolio.php. Endre deretter markeringen for å passe dine behov: skjul datoen hvis den ikke er relevant for en portefølje; vis miniatyrbildet i en annen størrelse; erstatt standard the_excerpt() med the_content().

1<?php
2/* Template for Portfolio archive — overrides archive.php */
3
4if ( have_posts() ) {
5 while ( have_posts() ) {
6 the_post();
7 // Your custom markup here
8 the_post_thumbnail( 'medium' );
9 the_title( '<h3>', '</h3>' );
10 the_excerpt();
11 }
12}

Hvis du jobber med et FSE-tema (Block Theme), opprettes arkivmalen i nettstedredigereren: Appearance → Editor → Templates → Add New Template → Archive: Portfolio. Ingen PHP, kun blokker, men logikken er den samme: egendefinert layout for en spesifikk CPT.

4. SEO-optimalisering for arkivsiden

En arkivside er ikke bare en praktisk URL. Søkemotorer indekserer den, og den kan enkelt drive trafikk for kommersielle søk som «web studio portfolio» eller «agency team».

Hvis du har Yoast SEO installert, konfigureres metadata for CPT-arkiver på ett sted:

Innholdstypeinnstillinger i Yoast SEO for egendefinerte innlegg

Åpne Yoast SEO → Settings → Content Types, finn din egendefinerte innleggstype, og utvid seksjonen. Sett maler for tittel og metabeskrivelse:

Malfelt for tittel og beskrivelse for arkivsiden i Yoast SEO

Anbefalte maler:

  • Tittel: %%pt_plural%% %%page%%, %%sitename%%
  • Metabeskrivelse: %%pt_plural%%, work samples, case studies and projects. %%sitename%%

Yoast erstatter automatisk variablene %%pt_plural%% og %%pt_single%% fra CPT-innstillingene dine. Ikke glem å deaktivere noindex for arkivsiden hvis den er aktivert som standard; avkrysningsboksen Show in search results må være aktiv.

5. Open Graph-markering og sidepanel

For å sikre at et bilde hentes når arkivsidelinken deles på sosiale medier, legg til og:image via wp_head-hooken. Sett inn koden i det aktive temaets functions.php eller via Code Snippets-pluginen:

1add_action( 'wp_head', 'cpt_archive_og_image' );
2function cpt_archive_og_image() {
3 if ( is_post_type_archive( 'portfolio' ) ) {
4 echo '<meta property="og:image" content="' .
5 get_template_directory_uri() . '/images/portfolio-og.jpg' . '" />';
6 }
7}

Betingelsen is_post_type_archive() utløses bare på arkivsiden til den spesifiserte CPT-en, så markeringen vil ikke påvirke andre sider. Plasser bildet i temamappen din eller last det opp via mediebiblioteket og bruk den direkte URL-en.

En siste finpuss: sidepanelet. På arkivsider er det ofte unødvendig, spesielt for porteføljer eller team der kortbredde betyr noe. De fleste moderne temaer lar deg deaktivere sidepanelet i sideinnstillingene:

Sidepanelinnstillinger i temaredigeringsverktøyet

I blokk-temaer, bytt malen til Full Width i arkivsideinnstillingene. I klassiske temaer, se etter Page Attributes → Template → Full Width i tilpasseren eller redigeringsmetaboksen.

📺 Video: hele prosessen på 8 minutter

En kort engelsk demo som dekker CPT-opprettelse, aktivering av arkivet og en egendefinert mal fra første klikk til ferdig side:

⁉️🤔 Ofte stilte spørsmål

Hvorfor returnerer arkivsiden en 404 etter at jeg har opprettet CPT-en?

Mest sannsynlig aktiverte du ikke parameteren Has Archive. Gå til CPT UI → Edit Post Types, finn din type, sett Has Archive til True, og spesifiser en Custom Rewrite Slug. Etter lagring, husk å gå til Settings → Permalinks og klikk «Save Changes»; dette tømmer hurtigbufferen for omskrivingsregler.

Kan jeg hoppe over CPT UI-pluginen?

Ja, egendefinerte innleggstyper kan registreres i functions.php via funksjonen register_post_type(). Det tar omtrent 15-20 linjer med kode, et par minutter for en utvikler. Pluginen gir bare et visuelt grensesnitt og forhindrer skrivefeil i argumenter.

Hvordan viser jeg CPT-oppføringer på hjemmesiden?

Legg til 'has_archive' => true i argumentene til register_post_type(), og for å inkludere oppføringer i hovedstrømmen, sett 'public' => true og 'exclude_from_search' => false. For målrettet visning, bruk WP_Query med argumentet 'post_type' => 'portfolio'.

Hva er forskjellen mellom archive-{posttype}.php og taxonomy-{taxonomy}.php?

Den første håndterer siden med ALLE CPT-oppføringer; den andre håndterer filtrering etter et spesifikt taksonomi-begrep (for eksempel «Prosjekttype: landingsside»). Begge følger malhierarkiet, men utløses på forskjellige URL-er.

Er en egendefinert mal obligatorisk?

Nei. Hvis standard archive.php passer for deg, bare aktiver Has Archive og bruk den. En egendefinert mal er nødvendig når du trenger unik markering: forskjellige miniatyrstørrelser, ingen datoer, et rutenett i stedet for en liste.

Hva om standardmalen ikke fungerer for deg?

En arkivside for egendefinerte innlegg er noe du setter opp én gang og glemmer. CPT UI pluss noen få linjer i functions.php dekker problemstillingen fullstendig: ingen alt-i-ett-plugins, ingen ekstra kode på frontenden.

Hvis du fortsatt har spørsmål om en spesifikk tema- eller plugin-kombinasjon etter å ha lest dette, legg igjen en kommentar under innlegget. Vi vil undersøke din sak separat.