Et permalink er det link, der bruges til at få adgang til et bestemt stykke indhold på dit websted.

Hjemmesiden på Kinsta er for eksempel på https://kinsta.com/, vores blog er på https://kinsta.com/blog/ og et enkelt indlæg bruger et link som https://kinsta.com/blog/ wordpress-widgets/.

Permalinks bruges også til arkivsider, statiske sider og alt indhold på dit websted, der har brug for sin egen URL.

I dette indlæg viser vi dig, hvordan permalinks fungerer, hvordan du optimerer dem til dit websted, og hvordan du konfigurerer dem via din indstillingsskærm og ved at skrive en kode.

Hvad er WordPress Permalinks?

WordPress Permalinks er defineret i den officielle WordPress codex som:

“De permanente webadresser til dine individuelle weblog-indlæg såvel som kategorier og andre lister over weblog-indlæg.”

Hver side på dit websted (inklusive indlæg, sider, arkivsider og andre sider såsom 404-siden) har sit egen permalink.

Så for eksempel vil din startside være på yoursite.com, mens din blog er på yoursite.com/blog.

Hvis du har en ‘featured’ kategori i din blog, kan det være på en af ​​et antal webadresser:

  • com/category/featured
  • com/blog/featured eller bare
  • com/featured.

Individuelle stillinger har også deres egen permalink. I dine tema-skabelonfiler bruges skabelon-tagget the_permalink() til at hente URL’en til et indlæg og oprette et klikbart link derfra

WordPress bruger dette til at hente den unikke permalink til det enkelte indlæg og output det inden for et <a> element, så det kan bruges som et link i dine blogindlæg.

Det skønne ved at have dette skabelon-tag er, at du kun behøver at bruge det ene stykke kode til at hente linket til et hvilket som helst indlæg på dit websted, og du behøver ikke at kode nogle links til dit tema.

Forskellen mellem permalinks, slugs og links

I dette indlæg vil vi fokusere på permalinks i detaljer, men vi vil også se på slugs. Så hvad er forskellen mellem dem?

Permalinket er hele linket til et indlæg. Så linket, jeg tidligere gav til et Kinsta-indlæg på widgets, er https://kinsta.com/blog/wordpress-widgets/.

Sluggen er den sidste del af denne permalink, og den er unik for dette indlæg. I dette tilfælde er det wordpress-widgets.

Denne slug genereres automatisk for dig baseret på titlen på et indlæg. Og hvis du vil oprette en slug manuelt til et indlæg, kan du. Jeg viser dig hvordan (og hvorfor du måske vil) senere i dette indlæg.

Hvordan WordPress Permalinks oprettes

På et statisk websted identificerer en URL en ressource ved navn og sti til bibliotek, som vist i følgende eksempel:

https://example.com/path/to/resource/wordpress-permalinks.html

In order to have well-structured URLs we just need a well-structured file system and properly named resources.

Men internettet er dynamisk, og vi er vant til at administrere websteder ved hjælp af databasestyrede CMS’er, hvilket betyder at URL’er vil indeholde et antal parametre, hvis værdier bestemmer forespørgslen, der skal køres mod databasen.

Overvej følgende eksempel:

https://example.com/?key1=val1&key2=val2

I denne URL bemærker du en separator (spørgsmålstegnet) og et sæt nøgle- / værdipar (adskilt med ampersand), der udgør forespørgselsstrengen. URL’en opfylder ikke kravene til brugbarhed og tilgængelighed og skal konverteres til en mere meningsfuld og SEO-venlig permalink.

Den måde, hvorpå disse “grimme” URL’er konverteres til optimerede permalinks, afhænger af din webserver. Hvis du er Apache-bruger, skal du tilføje et sæt omskrivningsdirektiver i rodmappens .htaccess-fil. Hvis du er Nginx-bruger, skal du tilføje et try_files-direktiv i hoved-konfigurationsfilen.

Men rolig! Det meste af tiden behøver du ikke at konfigurere webserveren linje for linje, fordi WordPress gør det for dig.

Som administratorbruger kan du hurtigt og nemt indstille brugerdefinerede omskrivningsregler fra admin panelet. Avancerede brugere og udviklere kan få endnu mere takket være WordPress Rewrite API, der leverer funktioner og hooks, der tilpasser permalink til et højere niveau.

En oversigt over WordPress queries

Med det specifikke formål at oprette forespørgslen, udføre den og gemme resultater fra WordPress-databasen, leverer WordPress WP_Query class. Takket være denne klasse behøver vi ikke bekymre os om forespørgslen, fordi WP_Query håndterer automatisk anmodningen, bygger forespørgslen og udfører den. Derefter returnerer WordPress ifølge skabelonhierarkiet den ønskede ressource.

Uden for boksen indrømmer WordPress anmodninger om enkeltindlæg, sider, indlægstyper samt om et antal arkiver sorteret efter kategori, tag, dato, forfatter og mere.

Desuden, hvis standardfunktionaliteter ikke ville være nok, kan udviklere oprette brugerdefinerede forespørgsler ved at oprette nye forekomster af klassen WP_Query (forespørgselsobjektet) eller videregive specifikke parametre til en eksisterende forekomst af forespørgslen inden dens udførelse.

Query parametrene er navngivet query variabler og er opdelt i tre grupper.

Public Query Vars

Disse variabler er public i den forstand, at de er tilgængelige til brug i offentlige anmodninger (dvs. URL’erne). Takket være disse variabler kan vi bede om indlæg fra forfattere:

?author=12?
author_name=mickey

Efter kategori eller tag:

?cat=4,5,6
?category_name=CMS
?tag=wordpress

Efter dato og klokkeslæt:

?monthnum=201601
?year=2015?w=13
?day=31

Efter indlæg eller side:

?p=123
?name=hello-world
?page_id=234

Og meget mere.

Private query variabler

Disse variabler er ikke beregnet til at blive føjet til URL-query strings. De kan bruges til at påvirke forespørgsler lige inden for et script (et plugin eller et temas functions.php-fil).

Følgende forespørgselsstreng returnerer ikke det forventede resultat:

?meta_key=city&meta_value=London

meta_key og meta_value er private query variabler, der ikke defineres i query strings. De skal sendes til en forekomst af  query objektet, som jeg vil vise dig senere.

Se hele listen over public og private query variabler i Codex.

Tilpassede query variabler

Disse custom variabler kan sendes via URL-query strings ligesom public querys. Den største forskel mellem offentlige og custom variabler er, at WordPress ikke håndterer custom vars på egen hånd, og vi skal få deres værdier fra et plugin til at tilpasse forespørgsler.

Når det er sagt, lad os vende tilbage til permalinks.

Ugly WordPress Permalinks og Query Vars

Ugly Permalinks vises query strings, dvs. den del af URL’en, der indeholder et sæt query variabler (query string), der bestemmer den returnerede ressource.

Almindelig indstilling på skærmen til indstillinger for Permalinks
Almindelig indstilling på skærmen til indstillinger for Permalinks

Overvej som eksempel følgende webadresser:

https://example.com/?cat=5
https://example.com/?cat=5,7,9

Som svar på disse URL’er returnerer WordPress arkivet med indlæg, der tilhører de angivne kategorier.

Vi er ikke begrænset til kun en parameter pr. URL. I de følgende eksempler bygger vi mere komplekse forespørgsler:

?author_name=lucy&category_name=WebDev?tag=wordpress&m=201606

I den første query string kræver forfatternavn og category name alle indlæg af den angivne forfatter i WebDev-kategorien. I den anden query string kræver tag og m alle indlæg tagget som “wordpress” og offentliggjort i juni 2016.

Som du kan se, kan vi indstille mere end en query variabel og tvinge WordPress til at køre avancerede querys ved blot at tilføje de relevante nøgle = værdipar til query strings.

Pretty Permalinks: Et bedre alternativ

Ved at aktivere Pretty Permalinks sætter vi en brugbar, tilgængelig og SEO-venlig URL-struktur. Lad os sammenligne følgende webadresser:

https://example.com/?p=123
https://example.com/wordpress-permalinks/

I dette eksempel viser den grimme permalink p-variablen og dens værdi (post-ID), mens den smukke URL viser post-slug.

WordPress tilbyder fire Pretty Permalink-formater, vi kan vælge imellem på Permalink Settings Screen, som vist på billedet nedenfor.

Pretty permalinks i Permalinks-indstillinger
Pretty permalinks i Permalinks-indstillinger

Men du er ikke begrænset til standardformater, da WordPress giver dig mulighed for at tilpasse det smukke permalinkformat ved at indstille en eller flere strukturtags.

Mulighed for custom struktur
Mulighed for custom struktur

Jeg viser dig disse detaljeret senere i dette indlæg.

Hvorfor er pretty permalinks vigtige?

Brug af pretty permalinks til dit WordPress-websted har to fordele: SEO og brugeroplevelse.

Hvorfor det? Søgemaskiner bruger din URL som en indikation af, hvad indlægget handler om. Hvis indholdet af permalinket vedrører indholdet af dit indlæg, vil det hjælpe søgemaskiner med at afgøre, hvad dit indlæg handler om, og at det handler legitimt om, hvad det hævder at være om.

For UX er pretty permalinks bedre, fordi de gør det lettere for brugerne at huske og bruge webadresser på dit websted. Ingen vil huske webadressen på din kontaktside, hvis den er yoursite.com/?p=456. Men de vil huske yoursite.com/contact.

Permalinks, Slugs og SEO

Indlægssluggen er den sidste del af URL’en til et indlæg. Hvis du har konfigureret WordPress Permalinks-indstillinger, så navnet på indlægget bruges, genereres sluggen til et indlæg kaldet ‘hvordan man opretter smukke permalinks’ automatisk som yourwebsite.com/how-to-create-pretty-permalinks/.

Det er en anstændig slug. Det fortæller brugerne, hvad indlægget handler om, og for søgemaskiner indeholder det pretty permalinks’, som muligvis er det keyword, du målretter mod.

Men det kan forbedres.

Dine slugs skal være lange nok til at inkludere de nøgleord, du målretter mod, men korte nok til at være mindeværdige for brugerne og ikke forveksle søgemaskiner med masser af unødvendige ord (her oprettes SEO-venlige permalinks i WordPress).

Så et indlæg kaldet “hvordan man opretter pretty permalinks” kan være bedre stillet med en smule pretty permalinks, der giver dig yoursite.com/pretty-permalinks/. Eller hvis du har flere indlæg på pretty permalinks og ønsker at give denne en bestemt slug, der relaterer til det faktum, at det er en vejledning, kan du bruge create-pretty-permalinks, hvilket giver dig dit yoursite.com/create-pretty-permalinks.

Eller for at tage tingene videre kan du forbedre SEO endnu mere ved at medtage ‘WordPress’: example.com/create-wordpress-pretty-permalinks.

Når folk ser på dit link i et søgeresultat, vil du heller ikke have, at søgeresultatet skal være så langt, at det ikke alle kan læses. Nedenfor er to resultater, jeg får fra Kinsta-bloggen, når jeg googler ‘wordpress permalinks’.

Google-resultat - WordPress permalinks
Google-resultat – WordPress permalinks

Egge disse har godt optimerede slugs. Den første er wordpress-premalinks-url-rewriting, hvilket indikerer, at den er målrettet mod disse søgeord, og den anden er wordpress-slug, som er endnu mere fokuseret.

Disse snegle spilder ikke ord. De fortæller søgemaskiner, hvad indlægget handler om, og intet andet.

Du kan optimere dine snegle til SEO først ved at vælge Post name på Permalinks-indstillingsskærmen og derefter ved manuelt at redigere sluggen for hvert indlæg, når du skriver det.

Permalinks, Slugs og UX

Brug af pretty permalinks og brug af korte, mindeværdige slugs giver dig også UX-fordele.

Ifølge et indlæg fra 1999 af Jacob Nielsen kræver et brugbart websted:

  • Et domænenavn, der er let at huske og let at stave.
  • Korte webadresser.
  • Nemme at skrive webadresser.
  • URL’er, der visualiserer webstruktur.
  • URL’er, der er “hackbare” for at give brugerne mulighed for at flytte til højere niveauer af informationsarkitektur ved at hacke slutningen af ​​URL’en.
  • vedvarende webadresser, der ikke ændres.

En URL bør aldrig ændres, da den kan gemmes og deles på mange måder. Det er grunden til, at vi kalder dem permalinks. Desuden skal en URL være semantisk i den forstand, at den straks og intuitivt er meningsfuld for ikke-ekspertbrugere.

Så selvom det er muligt at ændre permalink for et indlæg, efter at du har offentliggjort det, er det ikke en god idé. Det skyldes, at den oprindelige permalink muligvis allerede er blevet delt. Hvis du har brug for at ændre det, skal du følge de bedste fremgangsmåder for WordPress-redirect.

Sådan ændres Permalink-indstillinger i WordPress

I WordPress kan du ændre permalinks på en række måder:

  • Du kan redigere Permalinks-indstillingsskærmen for at aktivere pretty permalinks – noget du skal gøre, så snart du opretter dit websted.
  • Du kan redigere permalinkstrukturen for tags og kategorier på Permalinks-skærmen.
  • Du kan redigere slugs for individuelle indlæg, når du opretter og redigerer dem.
  • Du kan angive strukturen på links til custom posttyper, når du registrerer dem, ved at vælge at bruge standard eller at tilsidesætte den.
  • Du kan skrive et plugin for at ændre den måde, permalinks er struktureret på.
  • Du kan bruge redirects til at få en forældet permalink, der peger på en ny.

Lad os se på hver af disse.

Redigering af overordnede indstillinger for permalink

Skærmen til indstillinger for Permalinks er det første sted at gå til at konfigurere dine permalinks. Få adgang til det via Indstillinger> Permalinks.

Skærm til Permalink-indstillinger
Skærm til Permalink-indstillinger

Almindelige indstillinger

Det første afsnit behandler indstillinger for enkeltindlæg. Mulighederne er:

  • Almindelig: dette bruger Post-ID til linket. Det giver mening for browsere, men betyder ikke meget for mennesker eller søgemaskiner. Det ser sådan ud: example.com/?p=123.
  • Dag og navn: Dette inkluderer den fulde dato, hvor indlægget blev offentliggjort, såvel som dets navn (eller mere præcist dets slug). Det ser sådan ud: example.com/2020/06/01/my-post/.
  • Måned og navn: Dette er en kortere version af dag og navn, med kun måned og år og ikke dagen: example.com/2020/06/my-post/.
  • Numerisk: Som den almindelige mulighed bruger dette post-id’et og er ikke meget brugervenligt. example.com/arkiver/123.
  • Indlægsnavn: Denne indstilling inkluderer ikke nogen datoer eller post-id’er, men bruger bare slug: example.com/my-post/.
  • Brugerdefineret struktur: Her kan du oprette din egen brugerdefinerede struktur. Brug tags til at hente oplysninger baseret på postdataene og statisk tekst for at tilføje noget, der ikke ændrer sig mellem indlæg.

Disse tags er specifikke nøgleord, der er pakket inden for % -tegnet. WordPress leverer følgende tags:

  • %year% – året for offentliggørelse (fire cifre).
  • %monthnum% – publikationsmåneden (to cifre).
  • %day% – dagen for offentliggørelsen (to cifre).
  • %time% – timen for offentliggørelse (to cifre).
  • %minute% – minut for offentliggørelse (to cifre).
  • %second% – det andet af publikationen (to cifre).
  • %post_id% – det unikke id (heltal).
  • %post name% – indlægssluggen (dvs. den desinficerede streng, der repræsenterer postens titel).
  • %category% – kategorisluggen.
  • %author% – forfatterens slug.

Prøv at kontrollere alternativknappen Custom structure og tilføje en af ​​følgende strings i tekstfeltet:

  • /%author%/%postname%/
  • /%year%/%postname%/
  • /%category%/%postname%/

Enhver af disse strings genererer en anden smuk permalink med specifikke semantiske værdier, som vist nedenfor:

example.com/rachelmccollin/wordpress-permalinks/
example.com/2020/wordpress-permalinks/
example.com/CMS/wordpress-permalinks/

I det første eksempel fremhæver den resulterende URL forfatteren af ​​indlægget. De to andre formater fortæller os henholdsvis udgivelsesåret og postkategorien. Det er op til dig at vælge det format, der passer dig bedst.

Når du har valgt den ønskede indstilling, skal du enten gå videre til sektionen Valgfri eller klikke på Gem ændringer for at gemme dine indstillinger.

Valgfri Permalink-indstillinger

Ud over indstillingerne for dine enkelte indlæg giver Permalinks-indstillingsskærmen dig også mulighed for at indstille en brugerdefineret struktur til din kategori og tagarkiver.

Hvis du ikke gør dette, er standard at inkludere /category/category-slug/ i slutningen af ​​permalinket. Så hvis du har en kategori af ‘featured’, ville dens arkivside være på yoursite.com/category/featured.

Valgfri permalink-indstillinger
Valgfri permalink-indstillinger

Du kan ændre dette i sektionen Valgfri på siden med indstillinger for Permalinks. Så hvis du ville have yoursite.com/blog/featured/ som permalink for det kategoriarkiv, ville du gå ind i bloggen i feltet Kategoribase. Du behøver ikke at indsætte tilbageslag eller bruge tags.

Sådan ændres permalinks og snegle til individuelle indlæg og sider

Når du har aktiveret smukke permalinks på dit WordPress-websted, er det tid til at optimere slug til individuelle indlæg og sider.

Det er bedst at gøre dette, når du opretter dit indhold. Hvis du ændrer et indlægs slug, ændrer du den webadresse, det bruger, og eventuelle links, du eller dine besøgende delte tidligere, fungerer ikke længere.

For at redigere et indlægs slug arbejder du på indlæg-redigeringsskærmen for det indlæg. Gå til Indlæg, og vælg det indlæg, du vil redigere. (Hvis du er i færd med at oprette indlægget, vil du allerede være på højre skærm).

På skærmbilledet til redigering af indlæg skal du vælge dokument ruden i højre side og gå til afsnittet Permalink. Klik på pilen til højre for den, hvis den ikke allerede er åben.

Permalink redigering i postredigeringsskærmen
Permalink redigering i postredigeringsskærmen

Den automatisk genererede slug vises i feltet URL Slug. Du kan redigere dette for at gøre sneglen kortere og mere fokuseret.

Før du redigerer det, skal du kopiere den gamle slug et sted, så du kan bruge den, hvis du har brug for at oprette en redirect bagefter (dette gælder kun for tidligere offentliggjorte indlæg).

Slug redigeret
Slug redigeret

Klik nu på knappen Publicer eller Opdater for at gemme dine ændringer.

Glem ikke: hvis du har redigeret sluggen for et eksisterende indlæg, kan du oprette et problem for folk, der har det oprindelige link og skal bruge omdirigeringer.

Sådan ændres Permalink-indstillinger for arkivsider

For at ændre permalink-indstillinger for individuelle arkivsider kan du redigere indstillingerne for ‘kategori’ eller ‘tag’ base i Permalinks-indstillingsskærmen. Du kan også ændre sluggen for en individuel kategori, tag eller tilpasset taksonomi.

Lad os se på, hvordan du gør det, og gå derefter videre til redigering af permalink for tilpassede taksonomier og indlægstyper, når du registrerer dem.

Ændring af snegle til kategorier og tags

For at gøre dette skal du gå til Indlæg> Kategorier (eller Indlæg> Tags).

Kategorier redigerings-skærm
Kategorier redigerings-skærm

Find den kategori eller det tag, hvis slug du vil redigere, og klik på dets navn.

Redigering af en kategori-slug
Redigering af en kategori-slug

Du kan derefter skrive en slug til kategorien eller tagget. WordPress genererer automatisk en baseret på navnet på kategorien eller tagget, men du behøver ikke at beholde dette. Som med indlæg er det fornuftigt at gøre dette, når du konfigurerer kategorien eller tagget. Hvis du gør det senere, skal du oprette en redirect.

Hvis du opretter en brugerdefineret taksonomi, eller hvis en er oprettet af et plugin, kan du redigere slugs for individuelle udtryk i denne taksonomi på nøjagtig samme måde. Men hvis du vil redigere sluggen for selve taksonomien, skal du redigere en kode.

Ændring af snegle til brugerdefinerede taksonomier

Når du registrerer en brugerdefineret taksonomi, vil arkivsiderne for denne taksonomi automatisk have en URL til yoursite.com/taxonomy/term, hvor taksonomi er taksonomi-ID’et, og udtrykket er udtrykket slug.

Lad os forestille os, at du registrerer en brugerdefineret taksonomi for sprog med id’et kinsta_language, som bruger et præfiks for at sikre, at det adskiller sig fra andre taksonomier, der er registreret af andre plugins. Du kan derefter oprette et udtryk med en slug på fransk.

URL’en til arkivet for dette taksonomiudtryk ville være yoursite.com/kinsta_language/french.

Men hvad hvis du vil ændre det, så det ikke inkluderer præfikset og er mere brugervenligt? Du kan gøre dette ved hjælp af rewrite argument, når du registrerer taksonomien.

Her er den kode, du vil bruge til at registrere taksonomien, herunder rewrite argumentet.

function kinsta_register_taxonomy() {                

 // languages
 $labels = array(
  'name'=> __( 'Languages' ),
  'singular_name' => __( 'Language' ),
  'search_items' => __( 'Search Languages' ),
  'all_items' => __( 'All Languages' ),
  'edit_item' => __( 'Edit Languages' ),
  'update_item' => __( 'Update Languages' ),
  'add_new_item' => __( 'Add New Language' ),
  'new_item_name' => __( 'New Language Name' ),
  'menu_name' => __( 'Languages' ),
 );

 $args = array(
  'labels' => $labels,
  'hierarchical' => true,
  'sort' => true,
  'args' => array( 'orderby' => 'term_order' ),
  'rewrite' => array( 'slug' => 'language' ),
  'show_admin_column' => true,
  'show_in_rest' => true
 );

 register_taxonomy( ‘kinsta_language', array( 'post', ‘attachment' ), $args);   

}

add_action( 'init', 'kinsta_register_taxonomy' );

Den vigtige linje i denne kode er denne:

'rewrite' => array( 'slug' => 'language' ),

Det omskriver den slug fra kinsta_language (ID) til Language (den nye værdi). Så din nye URL ville være din yoursite.com/language/french. Meget mere brugervenlig!

Sådan ændres slug til tilpassede indlægstyper

Tilpassede indlægstyper fungerer på samme måde som tilpassede taksonomier, når du registrerer dem, så de har en webadresse, der inkluderer id’et for den tilpassede indlægstype.

Lad os forestille os, at du registrerer en brugerdefineret indlægstype kaldet kinsta_book, og du opretter et indlæg af den posttype kaldet ‘Huckleberry Finn’ med en slug af huckleberry-finn.

URL’en ville være yoursite.com/kinsta_book/huckleberry-finn. Og slug til indlægstype-arkivet ville være yoursite.com/kinsta_book.

Igen kan du ændre dette, når du registrerer den tilpassede indlægstype ved hjælp af rewrite argument. Igen er her koden inklusive dette argument:

function kinsta_register_post_type() {

 // books
 $labels = array(
  'name' => __( 'Books' ),
  'singular_name' => __( 'Book' ),
  'add_new' => __( 'New Book' ),
  'add_new_item' => __( 'Add New Book' ),
  'edit_item' => __( 'Edit Book' ),
  'new_item' => __( 'New Book' ),
  'view_item' => __( 'View Book' ),
  'search_items' => __( 'Search Books' ),
  'not_found' =>  __( 'No Books Found' ),
  'not_found_in_trash' => __( 'No Books found in Trash' ),
 );

 $args = array(
  'labels' => $labels,
  'has_archive' => true,
  'public' => true,
  'hierarchical' => false,
  'supports' => array(
   'title',
   'editor',
   'excerpt',
   'custom-fields',
   'thumbnail',
   'page-attributes'
  ),
  'taxonomies' => array( ‘kinsta_language', 'category'),
  'rewrite'   => array( 'slug' => 'book' )
 );
 
 register_post_type( ‘kinsta_book', $args );

}

add_action( 'init', 'kinsta_register_post_type' );

Den vigtige linje for slug er denne:

'rewrite'   => array( 'slug' => 'book' )

Så nu vil URL’erne være yoursite.com/book/huckleberry-finn for en individuel bog og yoursite.com/book til arkivet.

Redigering af permalinks ved hjælp af custom fields

Ud over offentlig og privat forespørgsel vars, tillader WordPress udviklere og avancerede brugere at definere deres egne brugerdefinerede query vars. Når de er registreret, kan disse variabler føjes til query strings, ligesom offentlige queries, og deres værdier kan også bruges til at påvirke queries.

Sådan oprettes en brugerdefineret meta query (dvs. en query, der henter indlæg efter custom field), der drager fordel af custom query vars.

For at nå dette mål udvikler vi et plugin, hvorfra vi registrerer tilpassede variabler, får deres værdier og ændrer query i overensstemmelse hermed.

Sådan gør du …

Opret et plugin i dit wp_content/plugins-bibliotek. Tilføj en funktion for at registrere query variablerne:

/**
 * Register custom query vars
 *
 * @param array $vars The array of available query variables
 */

function myplugin_register_query_vars( $vars ) {

 $vars[] = 'city';
 return $vars;

}

add_filter( 'query_vars', 'myplugin_register_query_vars' );

Med query_vars filter kan du tilføje, fjerne eller ændre offentlig forespørgsel vars før forespørgslens udførelse. Callback funktionen i eksemplet gemmer som argument en matrix af de tilgængelige variabler tilføjer en ny variabel og returnerer den samme matrix.

Dernæst tilføj denne funktion, der bruger værdien af variablen til at ændre forespørgslen:

/**
 * Build a custom query
 *
 * @param $query obj The WP_Query instance (passed by reference)
 *
 */

function myplugin_pre_get_posts( $query ) {

 // check if the user is requesting an admin page
 // or current query is not the main query
 if ( is_admin() || ! $query->is_main_query() ){
  return;
 }

 $city = get_query_var( 'city' );

 // add meta_query elements
 if( !empty( $city ) ){
  $query->set( 'meta_key', 'city' );
  $query->set( 'meta_value', $city );
  $query->set( 'meta_compare', 'LIKE' );
 }

}

add_action( 'pre_get_posts', 'myplugin_pre_get_posts', 1 );

pre_get_posts action hook udløses, når forespørgslen er oprettet, men før den udføres. Så vi kan tilslutte en callback funktion til denne handling for at foretage vores ændringer i forespørgslen, før den kører. Det er hvad der sker:

  • Callback funktionen bevarer en forekomst af $query object, som sendes ved henvisning, ikke efter værdi. Dette betyder, at ændringer i query object påvirker den originale query og ikke en kopi af det. Af denne grund skal vi være sikre på, hvilken query der skal udføres (main query).
  • Senere får vi byværdien fra den aktuelle forespørgselsstreng takket være funktionen get_query_var.
  • Endelig, hvis $city ikke er tom, kan vi indstille meta query elements meta_key, meta_value og meta_compare. Disse sidstnævnte er private queries, der ikke er tilgængelige for offentlige anmodninger. Deres værdier kan kun indstilles fra scriptet.

Aktiver nu pluginet, tilføj byens custom field til et antal indlæg. Gå til Indstillinger> Permalinks for at opdatere permalinks, du behøver faktisk ikke gøre noget; bare at besøge skærmen er nok.

Kontroller nu webadresser som følgende:

https://example.com/?city=London

Som svar på denne anmodning returnerer WordPress alle indlæg, hvor byens city field value er London.

Vores sidste opgave er at konvertere den ugly URL til eksemplet ovenfor i en pretty permalinkstruktur. Lad os tilføje følgende funktion til vores plugin:

/**
* Add rewrite tags and rules
*/

function myplugin_rewrite_tag_rule() {

 add_rewrite_tag( '%city%', '([^&]+)' );
 add_rewrite_rule( '^city/([^/]*)/?', 'index.php?city=$matches[1]','top' );

}

add_action('init', 'myplugin_rewrite_tag_rule', 10, 0);

Funktionerne add_rewrite_tag og add_rewrite_rule er en del af Rewrite API. add_rewrite_tag gør WordPress opmærksom på city query var, mens add_rewrite_rule angiver en ny rewrie rule. Begge funktioner skal være tilsluttet init-handlingen. Takket være nyt tag og regel kan vi bruge følgende URL:

https://example.com/city/London/

WordPress returnerer et arkiv med indlæg, hvor byens brugerdefinerede field value er London.

Bemærk: når som helst der tilføjes en ny rewrite rule, skal WordPress-permalinks opdateres fra Permalinks-skærmen under admin-menuen Indstillinger.

Sådan ændres permalinks i WooCommerce

WooCommerce opretter custom post types og taksonomier, som alle har egne, som alle har standard permalinks defineret af pluginet.

Du kan redigere permalinkindstillingerne og slugs for alle disse.

Ændring af Permalinks til produktkategori, tag og attribut

Der er to aspekter ved redigering af permalinks for produktkategorier, tags og attributes: strukturen og sluggen. Disse fungerer på samme måde som almindelige kategorier og tags.

For at redigere permalinkstrukturen skal du gå til Indstillinger> Permalinks og finde sektionen Valgfri, hvor WooCommerce har tilføjet nogle ekstra felter.

Valgfri permalinks-indstillinger med WooCommerce installeret
Valgfri permalinks-indstillinger med WooCommerce installeret

Her kan du redigere indstillingerne for permalinks for de tre brugerdefinerede taksonomier, der er tilføjet af WooCommerce:

  • Produktkategorier: standard er /product-category/men du kan ændre dette, hvis du bruger en anden terminologi i din butik. Sørg for, at din ændring ikke kolliderer med dine indstillinger for almindelige kategorier, som ikke er den samme.
  • Produkt tags: standard er /product-tag/, og du kan ændre det, hvis du vil. Sørg for at undgå et sammenstød med almindelige post-tags.
  • Produktattributter: disse fungerer forskelligt fra de to andre taksonomier og har en anden struktur. Uanset hvad du tilføjer her, følges altid slug for det individuelle attribute name (f.eks. Størrelse) og selve attributten (udtrykket, f.eks. Stort).

Hvis du vil redigere slug for en individuel kategori eller et tag, skal du gå til Produkter> Kategorier (eller Produkter> Tags) og redigere disse på samme måde, som du vil sende tags og kategorier.

Produktkategori redigering af slug
Produktkategori redigering af slug

Redigering af attributter er forskellig, fordi du ikke kun har selve attributten, men også attribut-termerne.

Start med at gå til Produkter> Attributter.

Skærmbilledet product attribute
Skærmbilledet product attribute

Når du opretter en ny attribut, bruger du feltet Slug til at indstille slug på samme måde som for et tag eller en kategori. Alternativt kan du redigere slug for en eksisterende attribut ved at klikke på Rediger linket under den attribut på højre liste.

Redigering af product attribute-slugs
Redigering af product attribute-slugs

Klik på Opdater for at gemme dine ændringer.

For at redigere attribute term-slugs skal du gå til attribut skærmen og klikke på linket Konfigurer vilkår ved siden af attributten. Dette fører dig til listen over udtryk for den attribut.

Liste over produktattribut termer
Liste over produktattribut termer

Rediger nu slug for det begreb, ligesom du ville gøre for en kategori eller et tag. Dette tilføjes derefter til URL’en til arkivet for produkter, der har det udtryk.

Ændring af Permalinks til produkter

Du redigerer permalinks for produkter via Indstillinger> Permalinks. Rul ned til afsnittet Product permalinks.

Produktindstillinger for permalinks
Produktindstillinger for permalinks

Her kan du vælge mellem fire indstillinger for permalinks til dine produkter:

  • Standard: Hvis du allerede har aktiveret smukke permalinks, bruger dette hvert produkts slug med /product/ basen.
  • Shop base: I stedet for at bruge /product/ bruger din butik /shop/.
  • Shop base med kategori: Indsætter kategorien for det aktuelle produkt i URL’en. Dette tilføjer muligvis søgeord, som du vil målrette mod, hvis dine produktkategorier afspejler dem, men hjælper ikke din UX, da det opretter lange webadresser.
  • Brugerdefineret base: Opretter din egen URL-struktur ved hjælp af de ord, der gælder for din butik. Du kan ikke fjerne basen helt, du skal bruge noget.

Når du har valgt den ønskede indstilling, skal du klikke på knappen Gem ændringer for at gemme dit valg.

Du kan også redigere sluggen for et enkelt produkt på produkt redigeringsskærmen på nøjagtig samme måde som for et indlæg eller en side.

Sådan ændres WordPress Permalinks med et plugin

Du kan bruge et tredjeparts plugin til at foretage ændringer i dine permalink-indstillinger ud over det, som standardindstilling skærmen for WordPress Permalinks giver dig mulighed for at gøre.

Custom Permalinks WordPress-plugin
Custom Permalinks WordPress-plugin
  • Pluginet Custom Permalinks giver dig mulighed for at indstille URL’en til enhver postkategori eller tag til det, du vil have. Det opretter også omdirigeringer, så de gamle webadresser stadig fungerer.
  • Permalink Manager Lite-pluginet understøtter custom post typer såvel som brugerdefinerede taksonomier i pro-versionen. Det inkluderer også redirects og fungerer med tredjeparts plugins som WooCommerce og Yoast.

Sådan ændres WordPress Permalinks i phpMyAdmin

Hvis du ved hvad du laver og er sikker på at du ikke bryder noget, kan du også redigere permalinks i phpMyAdmin.

Dette er noget, du muligvis skal gøre, hvis du af en eller anden grund ikke kan få adgang til skærmen til indstillinger for Permalinks.

Start med at backup af din database. Du redigerer den direkte, så det er vigtigt at tage backup, hvis du laver en fejl.

Få adgang til phpMyAdmin.

Hvis du er Kinsta-kunde, gør du dette ved at logge ind på MyKinsta og derefter vælge det websted, du vil arbejde med.

Rul ned i informationsskærmen, og klik på knappen Åbn phpMyAdmin.

Åbn phpMyAdmin i MyKinsta
Åbn phpMyAdmin i MyKinsta

Indtast dit databasens brugernavn og dit password for at få adgang til phpMyAdmin. Du kan hente disse fra infoskærmen.

Klik på fanen Databaser øverst, og vælg derefter den database, du vil arbejde med.

Databasestruktur i phpMyAdmin
Databasestruktur i phpMyAdmin

Vælg tabellen wp_options, og find posten permalink_structure i kolonnen option_name. Du skal muligvis navigere ud over den første side med poster.

Find permalink_structure-posten
Find permalink_structure-posten

Klik på linket Rediger til venstre for denne post, og tilføj den permalink struktur, du vil bruge, under feltet option_value. Brug de tags, som vi identificerede tidligere, til brug på skærmen til Permalinks-indstillinger.

Redigering af permalink strukturen
Redigering af permalink strukturen

Klik på Start. Nu opdateres dine permalinks.

Yderligere læsning: Sådan ændres din WordPress-URL eller video:

Arbejd med Permalinks til billeder

Billeder har permalinks alle sammen, og hvert billede eller mediefil, du uploader til dit websted, vil have et antal links oprettet til det:

  • Linket til det billede, du uploadede – det originale billede.
  • Links til de nye billeder, der genereres ved hjælp af de mediestørrelser, du indstiller via Indstillinger> Medier.

Linket til det originale billede

Når du uploader et billede, oprettes et unikt link til den fil, hvor det er gemt på din server. Dette inkluderer stien til, hvor den opbevares, som er wp-content/uploads.

Det inkluderer også den dato, hvor du uploadede billedet. Dette betyder, at hvis du uploader et andet billede med det samme filnavn næste måned (eller næste år), forveksles billederne ikke, da de har unikke filstier.

Hvis du uploader et billede kaldet funnycat.jpg den 1. april 2020, vil dets link være yoursite.com/wp-content/uploads/04/funnycat.jpg. 04 angiver, at filen blev uploadet i april. WordPress opretter en nummereret mappe i uploadmappen for hver måned.

Hvis du uploadede en fil, der ikke var et billede, fungerede URL’en på samme måde: yoursite.com/wp-content/uploads/04/document.pdf.

Hvis du uploader mere end en fil med samme navn i en given måned, tilføjer WordPress et nummer i slutningen af ​​filnavnet. Så hvis jeg uploader et andet billede kaldet funnycat.jpg, vil det kalde det funnycat-1.jpg.

Hvis du nogensinde har brug for at linke til det originale billede eller finde det for at kontrollere, at det fungerer korrekt, finder du dette link.

Du kan også finde linket til vedhæftningsfilen ved at gå til Medier> Bibliotek og klikke på filen. Redigeringsskærmen vises for den pågældende fil, og du kan finde dens URL i feltet URL til fil til højre.

Oprindeligt billedlink
Oprindeligt billedlink

Du kan også linke til filen ved hjælp af funktionen wp_get_attachment_image() fra WordPress. Dette er en bedre praksis, da det betyder, at linket ikke ændres, hvis vedhæftede filer flyttes i fremtiden. Dette er en funktion, du vil bruge i et plugin eller en tema skabelonfil, og det bruger den vedhæftede fils unikke id.

I tilfælde af mit funnycat.jpg billede er ID’et 4995. Jeg kan få dette ved at gå til billedredigering skærmen og klikke på URL’en til denne skærm øverst i browservinduet. De sidste cifre er id’et.

For at hente dette billede i en skabelonfil eller plugin vil jeg bruge denne kode:

<?php wp_get_attachment image( ‘4995’ ); ?>

Dette ville hente billedet i fuld størrelse. Hvis jeg ville udsende det, tilføjede jeg ekko:

<?php echo wp_get_attachment image( ‘4995’ ); ?>

Permalinks til forskellige størrelsesbilleder

WordPress opretter også billeder ved hjælp af de indstillinger til filstørrelse, der er konfigureret til dit websted. Du gør dette ved at gå til Indstillinger> Medier.

Skærm til medieindstillinger
Skærm til medieindstillinger

Så hvis dit billede allerede er større end den store indstilling, opretter det tre billeder – stort, medium og miniaturebillede.

Det navngiver dem ikke ved hjælp af disse konventioner, fordi du muligvis ændrer indstillingen for dem i fremtiden. I stedet bruger den filens dimensioner inden for filnavnet og gemmer dem på samme sted som det originale billede i mappen måned i wp-content/uploads.

Den nemmeste måde at finde linkene på er at se på din FTP-klient og finde alle de billeder, der er uploadet i en given måned.

Uploadede billeder i FTP-klient
Uploadede billeder i FTP-klient

Lad os tage det billede, jeg har uploadet til mit websted, der hedder funnycat.jpg. Du kan se det i skærmbilledet ovenfor.

WordPress har også oprettet ekstra filer ved hjælp af indstillingerne til filstørrelse for mit websted:

  • funnycat-150×150.jpg
  • funnycat-222×300.jpg
  • funnycat-300×200.jpg
  • funnycat-757×1024.jpg
  • funnycat-768×1040.jpg
  • funnycat-1135×1536.jpg
  • funnycat-1513×2048.jpg

Der er mere end standarderne der, fordi jeg bruger plugins, der bruger ekstra billedstørrelser og har indstillet en ekstra brugerdefineret størrelse til en af ​​mine sideskabeloner i temaet. Men du kunne bruge linket til en af ​​disse som et hard link, hvis du ville.

En bedre mulighed, hvis du vil linke til billedet, er dog at bruge funktionen wp_get_attachment_image(), som vi allerede har set på, og tilføje en ekstra parameter til billedstørrelsen.

Så for at sende det mellemstore billede ud, skal du bruge dette:

<?php echo wp_get_attachment image( ‘4995’, ‘medium’ ); ?>

Det er en meget mere robust måde at hente billedet på end at oprette et hard link i din kode.

Sådan laves redirect af permalinks til forskellige indholdstyper

Redigering af slug for et eksisterende indlæg eller ændring af permalink-indstillingerne generelt, kan forårsage et problem, hvis du tidligere har delt indlæg ved hjælp af de gamle links. Hvis nogen derefter klikker på disse links, føres de til en 404-side.

Du kan rette dette ved at oprette redirect fra de gamle links til de nye.

Redirect af individuelle indlæg og sider

For at lave redirect den gamle slug fra et indlæg til den nye skal du oprette en redirect regel for disse to webadresser.

Hvis du er hos Kinsta, kan du oprette redirect regler  i MyKinsta-dashboardet.

Find dit websted, og klik derefter på indstillingen Redirect i menuen.

Redirects i MyKinsta
Redirects i MyKinsta

Klik på knappen Tilføj redirect regel for at åbne pop up til redirect regler.

MyKinsta tilføj redirect regel
MyKinsta tilføj redirect regel

For at tilføje din redirect skal du vælge 301 redirect og derefter indtaste den gamle slug som Redirect fra value og den nye slug som Redirect til value.

Klik på knappen Tilføj redirect regel, hvorefter din redirect oprettes.

Hvis du ikke er hos Kinsta, kan du bruge et redirection plugin til at konfigurere redirect. Redirection pluginet er det mest populære. Det giver dig mulighed for at opsætte redirects manuelt, og det vil også overvåge ændringer i dine slugs og automatisk konfigurere redirects til dig. Vær omhyggelig med at undgå omdirigering af sløjfer, da disse resulterer i fejlen ‘too many redirects‘ og forhindrer sider i at indlæses.

Nedenfor kan du se, at jeg har ændret slug for et af mine indlæg, og pluginet har fanget det og oprettet en redirect regel.

Redirection plugin redirect regel set up
Redirection plugin redirect regel set up

Redirection af arkivsider

Hvis du ændrer strukturen på dine arkivsider ved hjælp af sektionen Valgfri på siden med indstillinger for Permalinks, føres alle, der bruger det gamle link til et kategoriarkiv, til din 404-side. Så du bliver nødt til at oprette en wildcard-redirection.

Opret en redirect regel i MyKinsta, der bruger den basistruktur, du brugte før, og den, du bruger nu, med en stjerne til at betegne et jokertegn efter det.

I feltet Omdirigere fra skal du skrive den gamle sti til kategorier med et jokertegn. Det skal tage formularen /oldslug/(.*)$. Posten for redirect to skal tage form /newslug/$1.

Så hvis du har ændret din kategoris URL-struktur til at bruge blog før kategorinavnet i stedet for standard category, skal du indtaste /category/(.*)$ i feltet Redirect fra og /blog/$1 i feltet Redirect to.

Tilføjelse af en wildcard-redirect i MyKinsta
Tilføjelse af en wildcard-redirect i MyKinsta

Hvis du bruger Redirection plugin, skal du først aktivere Regex-funktioner, da jokertegnets stjerne er en regex-funktion.

Gå til Værktøjer> Redirection, og gå til Tilføj ny redirection på skærmen.

Oprettelse af en ny redirect regel med omdirigerings-pluginet
Oprettelse af en ny redirect regel med omdirigerings-pluginet

Klik på URL-indstillinger/Regex dropdown, og marker afkrydsningsfeltet Regex.

Opsætning af en wildcard-redirect med Redirection pluginet
Opsætning af en wildcard-redirect med Redirection pluginet

I feltet Kilde-URL skal du skrive den gamle sti til kategorier med et jokertegn. Det skal tage formularen /oldslug/(.*)$. Posten til Target URL skal tage kilden /newslug/$1. Dette fungerer på nøjagtig samme måde som i MyKinsta.

Se vores videovejledning til WordPress-redirects af bedste praksis:

Fejlfinding af WordPress Permalinks

Lejlighedsvis kan du opleve, at permalinks ikke fungerer, som du forventer. Her skal du gøre, hvis det sker.

Permalinks fungerer ikke efter registrering af en posttype

Nogle gange registrerer du en ny posttype eller taksonomi, og linkene til de relevante arkivsider eller til indlæg af post typen er ikke bekymrede.

Gå ikke i panik! Dette er simpelthen fordi WordPress ikke ved, at den tilpassede posttype eller taksonomi betyder en ændring af permalinkindstillinger. Gå blot til Indstillinger> Permalinks for at opdatere indstillingerne. Du behøver ikke engang at foretage ændringer eller klikke på knappen Gem ændringer – bare at åbne skærmen er nok.

Permalinks opfører sig ikke som du vil have dem til

Hvis dine permalinks ikke fungerer, som du forventer, og det ikke er fordi du lige har registreret en tilpasset posttype eller taksonomi, kan du prøve disse tip.

  • Kontroller, at du har indtastet URL’en korrekt i browseren.
  • Gå til Indstillinger> Permalinks og kontroller opsætningen. Er tags korrekte? Sørg for, at du ikke har gået glip af noget eller brugt den forkerte syntaks.
  • Ryd dit websteds cache, hvis du bruger et cache plugin. Caching kan forstyrre ændringer i links.
  • Hvis du har ændret indstillingerne for permalinks, har du muligvis links i kroppen af ​​dit webstedsindhold, der nu er forældede. Rediger dem, eller konfigurer redirects.
  • Kontroller, om du har ændret slug manuelt for indlæg, og om disse skal redigeres.
  • Kontroller, om du har installeret et redirection plugin eller et plugin, der inkluderer redirects. Kontroller i så fald, hvilke redirects du har føjet til indstillingerne.
  • Hvis du har plugins, der påvirker indlægstyper eller links, kan du prøve at deaktivere dem og se, om det løser problemet.
  • Hvis du ikke kan få adgang til skærmbilledet for indstillinger for Permalinks, skal du bruge metoden beskrevet tidligere til at redigere permalinks via phpMyAdmin.

Følg disse tip, og du skal kunne få dine permalinks til at fungere som de skal.

Resumé

Permalinks er en utrolig nyttig funktion i WordPress. Du kan bruge dem til at forbedre brugeroplevelsen og øge din placering på søgemaskinerne.

Hvis du følger guiden ovenfor, har du permalinks, der er optimeret. Du vil være i stand til at konfigurere dem til at fungere nøjagtigt som du har brug for dem for alle posttyper, taksonomier og brugerdefinerede slugs.

Nu er det din tur: hvordan administrerer du dine permalinks? Glemte vi at dække noget om WordPress-permalinks? Lad os vide i kommentarerne nedenfor!

Rachel McCollin

Rachel McCollin har hjulpet folk med at bygge hjemmesider med WordPress siden 2010. Hun er en stor fan af selvhostet WordPress og vil gerne hjælpe så mange mennesker som muligt med at skabe en fantastisk hjemmeside med det.