How do I remove items from my WordPress menu?

Fjernelse af Menupunkter i WordPress: En Komplet Guide

13/12/2021

Rating: 4.98 (8457 votes)

Er dit WordPress-dashboard fyldt med menupunkter og undermenuer, du aldrig bruger? Et overfyldt administratorpanel kan ikke blot virke uoverskueligt, men også udgøre en sikkerhedsrisiko eller forvirre brugere med begrænsede rettigheder. Heldigvis tilbyder WordPress fleksible måder at rydde op på, uanset om du er en udvikler, der ønsker at strømline bagpanelet for dine klienter, eller en almindelig bruger, der blot ønsker at fjerne et par uønskede navigationspunkter. Denne omfattende guide vil dykke ned i metoderne til at fjerne både dashboard-undermenuer og front-end navigationsmenupunkter, så du kan skabe et mere effektivt og brugervenligt WordPress-miljø.

How to remove a submenu in WordPress?
Removing a menu does not replace the need to filter a user’s permissions as appropriate. In order to remove the theme-editor.php submenu of themes.php (and others) in more recent versions of WordPress, you need to bind to the admin_menu hook with a very high priority (about 110, depending on the submenus to remove).

Lad os udforske de forskellige strategier, fra simple klik til avanceret kode, og hjælpe dig med at genvinde kontrollen over dine WordPress-menuer.

Indholdsfortegnelse

Fjernelse af Undermenuer i WordPress (For Udviklere)

Hvis du administrerer et WordPress-site for en klient eller ønsker at tilpasse dit eget dashboard, kan det være nødvendigt at fjerne specifikke undermenuer fra administratorpanelet. Dette er især relevant for at skjule funktionalitet, der ikke er relevant for slutbrugeren, eller for at forbedre sikkerheden ved at fjerne adgang til følsomme områder som tema- eller plugin-editoren.

WordPress tilbyder funktionen remove_submenu_page() til dette formål. Denne funktion er designet til at fjerne en eksisterende undermenu fra en topniveau-menu i WordPress-administrationen. For at denne funktion skal virke korrekt, skal den kaldes på det rigtige tidspunkt under WordPress' indlæsningsproces.

Syntaksen for remove_submenu_page() er som følger:

remove_submenu_page( string $parent_slug, string $menu_slug )
  • $parent_slug: Dette er slug'en for den overordnede menu, som undermenuen tilhører. Eksempler inkluderer themes.php (for 'Udseende'), plugins.php (for 'Plugins'), options-general.php (for 'Indstillinger'), edit.php (for 'Indlæg'), og upload.php (for 'Medier').
  • $menu_slug: Dette er slug'en for den specifikke undermenu, du ønsker at fjerne. For eksempel er slug'en for temaeditoren theme-editor.php.

Det er afgørende, at du binder din kode til admin_menu hook'en med en høj prioritet. Hvorfor? Fordi de fleste undermenuer tilføjes under denne hook, og du skal sikre dig, at din fjernelseskode kører efter, at WordPress har tilføjet de menuer, du ønsker at fjerne. En prioritet på omkring 110 er ofte et godt udgangspunkt, da de fleste standardmenuer tilføjes med en standardprioritet på 10.

Vigtig advarsel: Brug ikke admin_init hook'en til dette formål, som det tidligere er blevet foreslået i nogle ældre vejledninger. Brug af admin_init kan potentielt ødelægge funktionaliteten af wp-admin/admin-ajax.php og forårsage uventede problemer på dit site.

Eksempel: Fjernelse af Tema-editoren

Et almindeligt scenarie er at fjerne tema-editoren (theme-editor.php) af sikkerhedsmæssige årsager, da den giver direkte adgang til at redigere temafiler, hvilket kan være farligt i de forkerte hænder.

function fjern_uonskede_undermenuer() {
// Fjern tema-editoren fra 'Udseende' menuen
remove_submenu_page( 'themes.php', 'theme-editor.php' );

// Eksempel: Fjern plugin-editoren
remove_submenu_page( 'plugins.php', 'plugin-editor.php' );

// Eksempel: Fjern 'Kommentarer' undermenuen fra 'Indlæg' (hvis du ikke bruger kommentarer)
// remove_submenu_page( 'edit.php', 'edit-comments.php' );

// Eksempel: Fjern 'Skriv nyt indlæg' fra 'Indlæg'
// remove_submenu_page( 'edit.php', 'post-new.php' );
}
add_action( 'admin_menu', 'fjern_uonskede_undermenuer', 110 );

Denne kode skal placeres i din functions.php fil i dit tema eller, endnu bedre, i et custom plugin for at sikre, at ændringerne forbliver, selv hvis temaet opdateres.

Sikkerhedsovervejelser

Det er vigtigt at forstå, at fjernelse af en menu ikke erstatter behovet for at filtrere en brugers tilladelser passende. Selvom undermenuen er fjernet fra synligheden, kan brugere med den korrekte tilladelse stadig få adgang til den tilknyttede skærm direkte ved at indtaste URL'en. For fuldstændig sikkerhed bør du altid kombinere fjernelse af menuer med robust rolle- og tilladelsesstyring, for eksempel ved at bruge funktioner som current_user_can() til at kontrollere adgang.

Almindelige Parent Slugs og Menu Slugs

Her er en oversigt over nogle almindelige overordnede slugs og de tilhørende undermenu slugs, som du ofte vil støde på:

Parent Slug (Overordnet Menu)Almindelig Undermenu SlugBeskrivelse
themes.php (Udseende)themes.phpTemaer
customize.phpTilpas
nav-menus.phpMenuer
widgets.phpWidgets
theme-editor.phpTemaeditor
plugins.php (Plugins)plugins.phpInstallerede Plugins
plugin-install.phpTilføj nyt Plugin
plugin-editor.phpPlugineditor
options-general.php (Indstillinger)options-general.phpGenerelt
options-writing.phpSkrivning
options-reading.phpLæsning
options-discussion.phpDiskussion
options-media.phpMedier
options-permalink.phpPermalinks
edit.php (Indlæg)edit.phpAlle indlæg
post-new.phpTilføj nyt
edit-tags.php?taxonomy=categoryKategorier
edit-tags.php?taxonomy=post_tagTags
upload.php (Medier)upload.phpBibliotek
media-new.phpTilføj nyt
users.php (Brugere)users.phpAlle brugere
user-new.phpTilføj ny bruger
profile.phpDin profil

Denne tabel er ikke udtømmende, da plugins og temaer kan tilføje deres egne menuer og undermenuer. Du kan ofte finde de korrekte slugs ved at inspicere URL'en for den side, du ønsker at fjerne. Slug'en er typisk filnavnet efter wp-admin/.

Fjernelse af Hovedmenupunkter i WordPress (For Udviklere)

Udover undermenuer kan du også fjerne topniveau-menupunkter fra WordPress-dashboardet ved hjælp af funktionen remove_menu_page(). Denne funktion fungerer på samme måde som remove_submenu_page(), men tager kun én parameter: slug'en for den topniveau-menu, du ønsker at fjerne.

remove_menu_page( string $menu_slug )
  • $menu_slug: Dette er slug'en for den topniveau-menu, du ønsker at fjerne. Eksempler inkluderer index.php (for 'Dashboard'), edit.php (for 'Indlæg'), upload.php (for 'Medier'), themes.php (for 'Udseende'), plugins.php (for 'Plugins'), users.php (for 'Brugere'), tools.php (for 'Værktøjer'), og options-general.php (for 'Indstillinger').

Ligesom med remove_submenu_page(), skal denne funktion også kaldes inden for admin_menu hook'en med en passende høj prioritet.

Eksempel: Fjernelse af 'Kommentarer' hovedmenuen

Hvis din hjemmeside ikke tillader kommentarer, kan du vælge at fjerne hele 'Kommentarer' menuen for at rydde op i dashboardet.

function fjern_hovedmenuer() {
// Fjern 'Kommentarer' menuen
remove_menu_page( 'edit-comments.php' );

// Eksempel: Fjern 'Værktøjer' menuen
// remove_menu_page( 'tools.php' );

// Eksempel: Fjern 'Dashboard' menuen (ikke anbefalet, da det er startskærmen)
// remove_menu_page( 'index.php' );
}
add_action( 'admin_menu', 'fjern_hovedmenuer', 110 );

Bemærk, at edit-comments.php er slug'en for 'Kommentarer' hovedmenuen, selvom den teknisk set er en undermenu til den ikke-eksisterende topniveau-menu for kommentarer. Det er et særligt tilfælde i WordPress' menustruktur.

Fjernelse af Navigationsmenupunkter (For Brugere)

De ovenstående metoder er primært for at fjerne menuer fra WordPress-administrationen (dashboardet). Hvis du ønsker at fjerne elementer fra dine front-end navigationsmenuer – altså de menuer, der vises på din hjemmeside for besøgende – er processen langt enklere og kræver ingen kode.

Dette gøres direkte via WordPress' indbyggede menu-administrator:

  1. Log ind på dit WordPress-dashboard.
  2. Naviger til Udseende > Menuer.
  3. Vælg den menu, du ønsker at redigere, fra rullemenuen øverst på siden, og klik på 'Vælg'.
  4. På venstre side af skærmen vil du se en liste over tilgængelige menupunkter (sider, indlæg, brugerdefinerede links osv.). På højre side ser du strukturen af din nuværende menu.
  5. For at fjerne et enkelt menupunkt, klik på pilen nedad ved siden af menupunktets navn for at udvide det. Klik derefter på linket 'Fjern'.
  6. For at fjerne flere menupunkter på én gang, kan du bruge funktionen 'Masseselektion'. Klik på afkrydsningsfeltet mærket 'Masseselektion'. Når du har markeret denne boks, vil hvert menupunkt vise en afkrydsningsboks ved siden af titlen. Afkryds de elementer, du vil fjerne, og klik derefter på knappen 'Fjern valgte emner'.
  7. Når du har fjernet de ønskede menupunkter, skal du huske at klikke på knappen 'Gem menu' for at anvende dine ændringer.

Denne metode påvirker kun, hvordan din navigation vises på forsiden af din hjemmeside; den fjerner ikke selve indholdet (sider, indlæg osv.) eller ændrer noget i WordPress-dashboardet.

Bedste Praksis og Overvejelser

Når du foretager ændringer i WordPress' kernestruktur eller udseende, er det altid en god idé at følge nogle bedste praksisser for at undgå uforudsete problemer.

Brug et Child Theme eller Custom Plugin

Hvis du tilføjer kode til din functions.php fil for at fjerne menuer, skal du sørge for at gøre det i et child theme'sfunctions.php fil. Hvis du ændrer direkte i dit hovedtemas functions.php, vil dine ændringer blive overskrevet, næste gang temaet opdateres. Endnu bedre er det at oprette et lille, site-specifikt plugin. Dette sikrer, at dine tilpasninger forbliver intakte, uanset hvilket tema du bruger eller opdaterer.

Test Grundigt

Før du implementerer ændringer på et live-site, skal du altid teste dem i et staging-miljø. Dette giver dig mulighed for at verificere, at menuerne er fjernet korrekt, og at ingen uventede bivirkninger er opstået, uden at det påvirker dine besøgende.

Dokumenter Dine Ændringer

Især for udviklere: hold styr på, hvilke menuer du har fjernet, og hvorfor. Dette vil spare dig tid i fremtiden, hvis du eller en anden udvikler skal fejlfinde eller ændre menustrukturen igen.

Tilladelser Først

Husk, at fjernelse af en menu primært handler om at skjule den for visse brugere eller at rydde op i brugergrænsefladen. Det er ikke en erstatning for korrekt rolle- og tilladelsesstyring. Sørg for, at dine brugerroller har de mindst mulige rettigheder, der er nødvendige for at udføre deres opgaver. Hvis en bruger ikke skal have adgang til en bestemt funktion, skal du begrænse deres tilladelse til den funktion, uanset om menuen er synlig eller ej.

Ofte Stillede Spørgsmål (FAQ)

Hvad hvis jeg fjerner noget vigtigt ved en fejl?

Hvis du har fjernet en undermenu eller hovedmenu ved en fejl ved hjælp af kode, kan du blot fjerne den tilsvarende remove_submenu_page() eller remove_menu_page() linje fra din kode, gemme filen, og menuen vil dukke op igen. Hvis du har fjernet et navigationsmenupunkt via 'Udseende > Menuer', kan du nemt tilføje det igen fra listen over tilgængelige menupunkter på venstre side.

Påvirker fjernelse af menuer webstedets funktionalitet?

Generelt nej. Fjernelse af menupunkter fra dashboardet skjuler blot adgangen til visse skærme. Selve den underliggende funktionalitet (f.eks. plugins, temaer, indstillinger) forbliver intakt, medmindre du også deaktiverer eller sletter de tilknyttede plugins/temaer. Hvis du fjerner navigationsmenupunkter, vil det kun påvirke, hvordan besøgende navigerer på din hjemmeside, ikke selve indholdet.

Kan jeg fjerne menuer for specifikke brugerroller?

Ja, absolut! Dette er en meget almindelig praksis. Du kan indkapsle din remove_submenu_page() eller remove_menu_page() kode i en betinget erklæring, der kontrollerer den nuværende brugers rolle eller kapacitet. For eksempel:

function fjern_menuer_for_abonnenter() {
if ( current_user_can( 'subscriber' ) ) {
remove_menu_page( 'edit.php' ); // Fjern 'Indlæg' for abonnenter
}
}
add_action( 'admin_menu', 'fjern_menuer_for_abonnenter', 110 );

Dette giver dig finmasket kontrol over, hvem der ser hvad i dit WordPress-dashboard.

Hvor finder jeg en liste over alle tilgængelige menu_slugs og parent_slugs?

Den mest pålidelige måde at finde de korrekte slugs på er ved at inspicere kilden til WordPress-administrationen eller ved at bruge WordPress' kodekilder og udviklerressourcer. Ofte kan du finde den nødvendige slug ved at holde musen over menupunktet i dit WordPress-dashboard og se på URL'en i din browsers statuslinje. Det er typisk den del af URL'en efter wp-admin/.

Hvad er forskellen mellem at fjerne et menupunkt og at skjule det med CSS?

At fjerne et menupunkt med PHP (som beskrevet her) fjerner det helt fra menuens struktur og gør det utilgængeligt via menuen. At skjule det med CSS (f.eks. display: none;) fjerner det kun visuelt; menupunktet er stadig til stede i DOM'en, og en klog bruger kan stadig finde det eller få adgang til det ved at manipulere URL'en. For sikkerhed og renlighed er PHP-metoden altid at foretrække.

Konklusion

At mestre kunsten at fjerne menuer i WordPress er en værdifuld færdighed for enhver, der ønsker et mere strømlinet, sikkert og brugervenligt WordPress-miljø. Uanset om du er en udvikler, der finjusterer et klient-dashboard, eller en indholdsskaber, der ønsker at rydde op i din navigationsmenu, giver WordPress dig de værktøjer, du har brug for.

Ved at anvende de teknikker, der er beskrevet i denne guide – fra de enkle træk-og-slip-metoder for front-end menuer til de mere avancerede PHP-funktioner for dashboard-undermenuer – kan du sikre, at dit WordPress-site er så effektivt og intuitivt som muligt. Husk altid at teste dine ændringer grundigt og overveje sikkerhedsaspekterne for at opretholde et robust og velfungerende WordPress-system.

Hvis du vil læse andre artikler, der ligner Fjernelse af Menupunkter i WordPress: En Komplet Guide, kan du besøge kategorien Teknologi.

Go up