Slik setter du opp WordPress-dashboardet for kunder
Å åpne wp-admin på en fersk installasjon er som å gå inn i en cockpit der halvparten av knappene utløser katapultsetet. For utviklere er dette rot. For kunder er det angst.
Et profesjonelt WordPress-oppsett handler ikke bare om temaet, men om opplevelsen i adminpanelet. Denne guiden går gjennom dashboardet slik WordPress 7.1 leverer det, og viser deretter koden jeg bruker for å rydde det for kundekontoer. Hver funksjon og hver hook nedenfor finnes i WordPress-kjernen og lenker til utviklerreferansen der det betyr noe.
1. Hva finnes i menyen i WordPress-dashboardet
1.1 Standardwidgets på dashboardets startside
Når du logger inn i WordPress første gang (dittnettsted.no/wp-admin), møter du Kontrollpanel. Det er kommandosentralen din, men den er ofte full av widgets du aldri kommer til å bruke.
Standardwidgets i dashboardet (med ID-ene kjernen registrerer i wp_dashboard_setup()):
- Velkommen: Raske lenker for å komme i gang (ikke en widget, men et panel koblet til action-hooken
welcome_panel) - Oversikt (
dashboard_right_now): Antall innlegg og sider, informasjon om temaet - Aktivitet (
dashboard_activity): Nylig publiserte innlegg og nye kommentarer - Hurtigkladd (
dashboard_quick_press): Rask måte å lage et innleggsutkast på - WordPress-arrangementer og -nyheter (
dashboard_primary): Kommende WordCamps og nyheter - Helsestatus for nettstedet (
dashboard_site_health): Varsler om sikkerhet og ytelse
1.2 Hva hvert menypunkt i admin-sidefeltet brukes til
Sidefeltet til venstre er hovedmenyen din. Det er avgjørende å forstå hver del:
Innlegg: Dynamisk innhold med dato, kategorier og stikkord. Brukes til: nyheter, artikler, oppdateringer, blogginnlegg.
Media: Filbiblioteket ditt. Bilder, PDF-er, videoer, lydfiler. WordPress sorterer etter opplastingsdato som standard.
Sider: Statisk, hierarkisk innhold. Brukes til: Om oss, Kontakt, Tjenester, Personvernerklæring.
Kommentarer: Administrer alle kommentarer på nettstedet. Moderering, spamkontroll, svar.
Utseende: Temaer, og i tillegg enten nettstedsredigeringen (blokktemaer) eller menyer, widgets og tilpasningsverktøyet (klassiske temaer).
Utvidelser: Installer, aktiver, deaktiver og konfigurer utvidelser.
Brukere: Administrer brukerkontoer, roller og profiler.
Verktøy: Import, eksport, Nettstedshelse og skjermene for å eksportere og slette personopplysninger.
Innstillinger: Sentral WordPress-konfigurasjon. Generelt, skriving, lesing, diskusjon, media, permalenker.
1.3 Hva er forskjellen på innlegg og sider
Slutt å forklare “kronologisk mot statisk”. Det forvirrer folk. Bruk denne analogien:
- Sider er huset ditt. (Forside, Om oss, Kontakt). De flytter seg sjelden.
- Innlegg er avisen din. (Nyheter, artikler, oppdateringer). En ny utgave kommer hver uke.
Tekniske forskjeller:
| Egenskap | Innlegg | Sider |
|---|---|---|
| Datobaserte arkiver | Ja | Nei |
| Kategorier | Ja | Nei |
| Stikkord | Ja | Nei |
| RSS-feed | Inkludert | Utelatt |
| Hierarkisk | Nei | Ja (forelder/barn) |
| Valg av mal | Ja, hvis temaet har innleggsmaler | Ja |
Valg av mal for innlegg kom med WordPress 4.7, da maler for innholdstyper sluttet å være forbeholdt sider.
2. Slik bruker du visningsinnstillinger i WordPress
Den mektigste knappen i WordPress gjemmer seg øverst til høyre: Visningsinnstillinger.
2.1 Skjule kolonner i innleggslisten
Før du overleverer et nettsted, gå til Innlegg > Alle innlegg og fjern haken for:
- Kommentarer (hvis de er slått av globalt)
- Stikkord (hvis du bare bruker kategorier)
- Forfatter (hvis bloggen har én forfatter)
Det reduserer den kognitive belastningen. Kunden trenger ikke se kolonner som aldri blir brukt. Samme panel har feltet Antall innlegg pr. side, som bestemmer hvor mange rader listen laster.
2.2 Visningsinnstillinger i innleggsredigereren
I den klassiske redigereren viser Visningsinnstillinger:
- Kategorier
- Stikkord
- Fremhevet bilde
- Utdrag
- Tilbaketråkk
- Tilpassede felter
- Diskusjon
- Identifikator
- Forfatter
I blokkredigereren finnes ikke knappen. De samme panelene slås av og på i redigererens dialog Preferanser.
Proff-tips: Slå bare på Tilpassede felter for redaktører som trenger det. Feltet viser rå metadata for innlegget, nyttig for avansert innholdsstyring og forvirrende for alle andre.
2.3 Visningsinnstillinger i sideredigereren
Ligner på innlegg, men inkluderer:
- Sideattributter: Forelderside, valg av mal, rekkefølge
- Fremhevet bilde
- Tilpassede felter
- Diskusjon
- Identifikator
- Forfatter
3. Tilpasse WordPress-dashboardet og fjerne widgets
3.1 Fjerne standardwidgets fra dashboardet
Som standard er hoveddashboardet (/wp-admin/index.php) en kirkegård av unyttige widgets: “WordPress-arrangementer og -nyheter”, “Hurtigkladd”, “Velkommen”.
Ikke bare minimer dem. Fjern dem med kode. Widgetene går gjennom remove_meta_box() på action-hooken wp_dashboard_setup. Velkommen-panelet er ikke en metaboks, så det trenger remove_action() på sin egen hook:
function wppoland_clean_dashboard() {
remove_meta_box('dashboard_primary', 'dashboard', 'side'); // WordPress Events and News
remove_meta_box('dashboard_quick_press', 'dashboard', 'side'); // Quick Draft
remove_meta_box('dashboard_activity', 'dashboard', 'normal'); // Activity
}
add_action('wp_dashboard_setup', 'wppoland_clean_dashboard');
// The Welcome panel is printed by wp_welcome_panel() on the welcome_panel action.
// Core adds that action in wp-admin/includes/admin-filters.php, so remove it on admin_init.
add_action('admin_init', function () {
remove_action('welcome_panel', 'wp_welcome_panel');
});3.2 Legge til egendefinerte dashboard-widgets
Erstatt standardwidgets med nyttig informasjon for kunden ved hjelp av wp_add_dashboard_widget():
function wppoland_add_custom_dashboard_widget() {
wp_add_dashboard_widget(
'wppoland_client_widget',
'Welcome to Your Website',
'wppoland_client_widget_content'
);
}
add_action('wp_dashboard_setup', 'wppoland_add_custom_dashboard_widget');
function wppoland_client_widget_content() {
echo '<p>Welcome! Need help? Contact support at [email protected]</p>';
echo '<p>Documentation: <a href="https://docs.example.com">View Guides</a></p>';
}3.3 Legge til eget fargeskjema i admin
WordPress 7.1 registrerer ni fargeskjemaer for admin i register_admin_color_schemes(). Brukerne velger under Brukere > Profil:
- Standard
- Frisk
- Lys
- Blå
- Mørk
- Soloppgang
- Ektoplasma
- Hav
- Kaffe
Eget fargeskjema med kode via wp_admin_css_color():
function wppoland_custom_admin_colors() {
wp_admin_css_color(
'wppoland',
'WPPoland Brand',
get_stylesheet_directory_uri() . '/admin-colors.css',
['#1e1e1e', '#ff6b6b', '#4ecdc4', '#ffe66d']
);
}
add_action('admin_init', 'wppoland_custom_admin_colors');4. Skjule adminmenyen etter brukerrolle
Ulike brukerroller ser ulike deler av dashboardet. Det er avgjørende å forstå dette for kundenettsteder.
4.1 Hvilke adminmenyer hver brukerrolle ser
Kjernen avgjør dette i wp-admin/menu.php ut fra rettigheter, ikke ut fra rollenavnet. Med standard roller og rettigheter:
Administrator: Full tilgang til alle menypunkter Redaktør: Kontrollpanel, Innlegg, Media, Sider, Kommentarer, Profil, Verktøy Forfatter: Kontrollpanel, Innlegg, Media, Kommentarer, Profil, Verktøy Bidragsyter: Kontrollpanel, Innlegg (opprette og redigere egne, men ikke publisere), Kommentarer, Profil, Verktøy Abonnent: Kontrollpanel, Profil
Verktøy vises for alle roller med edit_posts, fordi toppnivåpunktet krever akkurat den rettigheten. Det som ligger under (import, eksport, Nettstedshelse) har egne, strengere kontroller.
4.2 Skjule adminmenyer for ikke-administratorer
Hvis kunden ikke skal røre Verktøy eller Innstillinger, skjul dem. Du kan bruke utvidelser som Admin Menu Editor, men en enkel kodesnutt er tryggere og lettere:
add_action('admin_menu', function() {
if (!current_user_can('manage_options')) {
remove_menu_page('tools.php');
remove_menu_page('options-general.php');
}
});Å skjule er ikke tilgangskontroll. remove_menu_page() fjerner bare oppføringen fra den globale tabellen $menu, som kildekoden i referansen viser. Skjermens egen rettighetskontroll er uendret, så en bruker med rettigheten kan fortsatt åpne den via URL. Hvis en rolle ikke skal nå en skjerm, fjerner du rettigheten fra rollen.
4.3 Skjule spesifikke undermenyelementer
function wppoland_hide_submenu_items() {
if (!current_user_can('manage_options')) {
remove_submenu_page('themes.php', 'themes.php'); // Theme selection
remove_submenu_page('themes.php', 'customize.php'); // Customizer
}
}
add_action('admin_menu', 'wppoland_hide_submenu_items', 999);Filredigererne slår du heller av med en konstant, se avsnitt 7.1.
5. Fjerne og legge til metaboxer i WordPress
5.1 Hva er metaboxer i WordPress
Metaboxer er innholdsboksene i redigererne for innlegg og sider:
- Publiser: Lagre, forhåndsvise, planlegge, synlighet
- Format: Valg av innleggsformat
- Kategorier: Tildeling av taksonomi
- Stikkord: Håndtering av stikkord
- Fremhevet bilde: Miniatyrbilde for innlegget
- Utdrag: Manuelt utdrag
5.2 Slik flytter du metaboxer
Brukerne kan dra og slippe metaboxer for å tilpasse arbeidsflyten. WordPress husker plasseringene per bruker, i brukermetadata med skjermen som nøkkel (meta-box-order_post, closedpostboxes_post, metaboxhidden_post).
5.3 Fjerne metaboxer med kode
function wppoland_remove_post_metaboxes() {
remove_meta_box('postcustom', 'post', 'normal'); // Custom fields
remove_meta_box('trackbacksdiv', 'post', 'normal'); // Trackbacks
remove_meta_box('commentstatusdiv', 'post', 'normal'); // Discussion
remove_meta_box('commentsdiv', 'post', 'normal'); // Comments
remove_meta_box('slugdiv', 'post', 'normal'); // Slug
remove_meta_box('authordiv', 'post', 'normal'); // Author
}
add_action('add_meta_boxes', 'wppoland_remove_post_metaboxes', 99);Disse ID-ene hører til skjermen i den klassiske redigereren. I blokkredigereren ligger de fleste av de samme innstillingene i panelene i sidefeltet, og metaboxer fra utvidelser vises under innholdsområdet.
5.4 Legge til egne metaboxer
function wppoland_add_custom_metabox() {
add_meta_box(
'wppoland_custom_metabox',
'Additional Information',
'wppoland_render_custom_metabox',
'post',
'side',
'default'
);
}
add_action('add_meta_boxes', 'wppoland_add_custom_metabox');
function wppoland_render_custom_metabox($post) {
wp_nonce_field('wppoland_save_metabox', 'wppoland_metabox_nonce');
$value = get_post_meta($post->ID, '_wppoland_custom_field', true);
echo '<label for="wppoland_custom_field">Custom Field:</label>';
echo '<input type="text" id="wppoland_custom_field" name="wppoland_custom_field" value="' . esc_attr($value) . '" style="width:100%">';
}
function wppoland_save_custom_metabox($post_id) {
if (!isset($_POST['wppoland_metabox_nonce'])
|| !wp_verify_nonce($_POST['wppoland_metabox_nonce'], 'wppoland_save_metabox')
|| !current_user_can('edit_post', $post_id)) {
return;
}
if (isset($_POST['wppoland_custom_field'])) {
update_post_meta($post_id, '_wppoland_custom_field', sanitize_text_field(wp_unslash($_POST['wppoland_custom_field'])));
}
}
add_action('save_post', 'wppoland_save_custom_metabox');Engangskoden (nonce) som skrives ut i metaboksen, er bare nyttig hvis lagringsfunksjonen sjekker den, sammen med brukerens rett til å redigere akkurat det innlegget.
6. Endre rekkefølge og navn i WordPress-adminmenyen
6.1 Omorganisere menyelementer
function wppoland_custom_menu_order($menu_order) {
if (!$menu_order) return true;
return [
'index.php', // Dashboard
'edit.php', // Posts
'edit.php?post_type=page', // Pages
'upload.php', // Media
'separator1',
'themes.php', // Appearance
'plugins.php', // Plugins
'users.php', // Users
'tools.php', // Tools
'options-general.php', // Settings
];
}
add_filter('custom_menu_order', '__return_true');
add_filter('menu_order', 'wppoland_custom_menu_order');6.2 Gi nytt navn til menyelementer
function wppoland_rename_menus() {
global $menu;
$menu[5][0] = 'Articles'; // Rename Posts to Articles
$menu[10][0] = 'Files'; // Rename Media to Files
}
add_action('admin_menu', 'wppoland_rename_menus', 999);Posisjon 5 (Innlegg) og 10 (Media) er plassene kjernen tildeler i wp-admin/menu.php. En utvidelse som registrerer sin egen meny på samme posisjon, kan forskyve dem, så sjekk resultatet etter hver installasjon av en utvidelse.
6.3 Legge til egne menyelementer i admin
function wppoland_add_custom_menu() {
add_menu_page(
'Client Documentation',
'Documentation',
'read',
'client-docs',
'wppoland_render_docs_page',
'dashicons-book',
3
);
}
add_action('admin_menu', 'wppoland_add_custom_menu');
function wppoland_render_docs_page() {
echo '<div class="wrap"><h1>Client Documentation</h1>';
echo '<p>Welcome to your website documentation...</p></div>';
}6.4 Egendefinerte ikoner for menyelementer
WordPress inkluderer Dashicons som standard. Bruk dem eller egne SVG-er:
// Using Dashicons
add_menu_page('Custom Page', 'Custom', 'read', 'custom-page', 'callback', 'dashicons-star-filled');
// Using custom SVG
function wppoland_custom_admin_icon() {
echo '<style>
#toplevel_page_custom-page .wp-menu-image:before {
content: "";
background-image: url("' . esc_url(get_stylesheet_directory_uri() . '/icon.svg') . '");
background-size: contain;
background-repeat: no-repeat;
width: 20px;
height: 20px;
display: inline-block;
}
</style>';
}
add_action('admin_head', 'wppoland_custom_admin_icon');add_menu_page() godtar også en base64-kodet SVG-data-URI som ikonargument, noe som sparer den ekstra CSS-en.
7. Begrense WordPress-dashboardet for kunder
7.1 Skjule tema- og utvidelsesredigereren for kunder
Å koble fra menypunktene for redigererne fra admin_init virker ikke, fordi admin_menu allerede har kjørt da. Den dokumenterte bryteren er en konstant i wp-config.php, beskrevet i referansen for wp-config.php:
// wp-config.php
define('DISALLOW_FILE_EDIT', true); // removes the theme and plugin file editors for everyone
// Stricter: also blocks installing, updating and deleting plugins and themes from the admin
// define('DISALLOW_FILE_MODS', true);DISALLOW_FILE_EDIT gjør rettighetene edit_themes, edit_plugins og edit_files om til do_not_allow, så selv administratorer mister redigererne. DISALLOW_FILE_MODS går lenger og slår også av oppdateringer fra dashboardet. Det gir bare mening når oppdateringer leveres gjennom deploy eller WP-CLI.
For å skjule varselet om kjerneoppdateringer for ikke-administratorer kobler du det fra admin_notices, der kjernen legger det til med prioritet 3:
add_action('admin_init', function () {
if (!current_user_can('update_core')) {
remove_action('admin_notices', 'update_nag', 3);
}
});7.2 Egendefinert innloggingsomdirigering
Send kunder til en bestemt side etter innlogging:
function wppoland_login_redirect($redirect_to, $request, $user) {
if (isset($user->roles) && is_array($user->roles)) {
if (in_array('editor', $user->roles)) {
return admin_url('edit.php');
} elseif (in_array('author', $user->roles)) {
return admin_url('post-new.php');
}
}
return $redirect_to;
}
add_filter('login_redirect', 'wppoland_login_redirect', 10, 3);7.3 Endre teksten i admin-bunnteksten
Erstatt “Takk for at du skaper med WordPress” med din egen merkevare. admin_footer_text er et filter, så funksjonen returnerer teksten i stedet for å skrive den ut:
function wppoland_custom_admin_footer($text) {
return '<span id="footer-thankyou">Need help? Contact us at [email protected]</span>';
}
add_filter('admin_footer_text', 'wppoland_custom_admin_footer');7.4 Fjerne WordPress-versjonen fra admin-bunnteksten
function wppoland_remove_wp_version() {
remove_filter('update_footer', 'core_update_footer');
}
add_action('admin_menu', 'wppoland_remove_wp_version');8. Deaktivere eller tilpasse Gutenberg-blokkredigering
8.1 Utseende-menyen i blokktemaer (FSE)
I blokktemaer endrer menyen Utseende seg betydelig. I WordPress 7.1 viser den:
- Temaer: Valg av tema
- Redigeringsverktøy: Nettstedsredigeringen, der navigasjon, stiler, sider, maler og gjenbrukbare blokkmønstre redigeres
- Skrifter: Skriftbiblioteket
Lenken til tilpasningsverktøyet vises bare i et blokktema når en utvidelse eller temaet kobler seg på customize_register. Klassiske temaer med redigeringsstiler får punktet Utforming i stedet for Redigeringsverktøy, og resten får Mønstre.
8.2 Deaktivere blokkredigering for spesifikke innleggstyper
function wppoland_disable_gutenberg($use_block_editor, $post_type) {
if ($post_type === 'page') {
return false; // Use classic editor for pages
}
return $use_block_editor;
}
add_filter('use_block_editor_for_post_type', 'wppoland_disable_gutenberg', 10, 2);8.3 Laste egne skript i blokkredigereren
function wppoland_enqueue_block_assets() {
wp_enqueue_script(
'wppoland-block-editor',
get_stylesheet_directory_uri() . '/block-editor.js',
['wp-blocks', 'wp-dom-ready', 'wp-edit-post'],
filemtime(get_stylesheet_directory() . '/block-editor.js')
);
}
add_action('enqueue_block_editor_assets', 'wppoland_enqueue_block_assets');9. Slik fikser du vanlige problemer i WordPress-dashboardet
9.1 Hvit skjerm i admin
- Deaktiver alle utvidelser via FTP (gi mappen
/pluginsnytt navn) - Bytt til standardtema
- Sjekk PHP-feilloggene
- Øk minnegrensen
9.2 Hvorfor mangler menyelementer i admin
- Sjekk rettighetene til brukerrollen
- Konflikter mellom utvidelser
- Egen kode som fjerner menyer
9.3 Hvorfor er WordPress-dashboardet tregt
- Ingen persistent objektcache
- For mange dashboard-widgets som kaller eksterne tjenester
- Belastning fra utvidelser
- Oppblåst database
9.4 Hvorfor lagres ikke visningsinnstillinger
Visningsinnstillinger lagres per bruker i brukermetadata: manage{screen}columnshidden for kolonner i lister, metaboxhidden_{screen} og closedpostboxes_{screen} for bokser. Når de slutter å lagres, sjekk:
- En utvidelse eller et cachelag som forstyrrer admin-ajax-forespørselen som lagrer dem
- En objektcache som leverer utdaterte brukermetadata
- Konflikter mellom utvidelser
10. Sikre WordPress-admin med 2FA og IP-begrensning
Å sikre WordPress-dashboardet er avgjørende for å beskytte hele nettstedet. Disse tiltakene bygger på de grunnleggende herdingsteknikkene.
10.1 Tofaktorautentisering (2FA) for wp-admin
Tofaktorautentisering legger til en ekstra kontroll etter passordet. WordPress-kjernen har ikke 2FA. Det smaleste alternativet er utvidelsen Two Factor, publisert under kontoen til WordPress.org og oppført i katalogen i versjon 0.17.0 (krever WordPress 7.0, testet opp til 7.1.3 da dette ble skrevet). Den legger til 2FA og ingenting annet, noe som passer et oppsett uten alt-i-ett-sikkerhetspakker.
Dette tilbyr den ifølge siden i katalogen:
- Autentiseringsapp (TOTP): koder fra apper som Google Authenticator, Authy eller 1Password
- Reservekoder: ti engangskoder for nødstilfeller
- E-postkoder: engangskoder sendt til kontoens e-postadresse
Hver bruker slår den på i sin egen profil. Administratorer kan sette den opp for andre brukere og slå av metoder for hele nettstedet i utvidelsens innstillinger under Innstillinger. Be alle kundebrukere lage reservekoder første dag, for en mistet telefon betyr ellers en supportsak. Det større bildet finner du i WordPress-guiden til flerfaktorautentisering.
10.2 Begrense admin-tilgang etter IP-adresse
Å begrense admin-tilgangen til bestemte IP-adresser hindrer uautorisert tilgang fra ukjente steder. En sperre i PHP må hoppe over AJAX-forespørsler, fordi funksjoner på forsiden kaller admin-ajax.php, som også regnes som admin:
// Restrict wp-admin by IP
function wppoland_restrict_admin_by_ip() {
if (wp_doing_ajax()) {
return;
}
$allowed_ips = ['192.0.2.10', '203.0.113.50'];
$user_ip = $_SERVER['REMOTE_ADDR'] ?? '';
if (!in_array($user_ip, $allowed_ips, true)) {
wp_die(
__('Access denied. Your IP address is not authorized.', 'wppoland'),
__('Access Denied', 'wppoland'),
['response' => 403]
);
}
}
add_action('admin_init', 'wppoland_restrict_admin_by_ip');Bak en proxy eller et CDN inneholder REMOTE_ADDR adressen til proxyen, så kontrollen må lese adressen proxyen sender videre, og bare fra proxyer du stoler på.
IP-begrensning med .htaccess (syntaks for Apache 2.4, se Apaches guide til tilgangskontroll):
# Restrict wp-login.php by IP
<Files wp-login.php>
Require ip 192.0.2.10 203.0.113.50
</Files>De eldre direktivene Order Deny,Allow hører til Apache 2.2 og virker bare i 2.4 gjennom kompatibilitetsmodulen.
10.3 Endre innloggings-URL i WordPress
Kjernen har ingen innstilling for egen innloggings-URL. Filteret login_url endrer lenkene WordPress skriver ut, men wp-login.php svarer fortsatt. Kodesnutter som legger til en omskrivingsregel og kaller flush_rewrite_rules() ved hver init, er et dårlig bytte: funksjonsreferansen kaller tømmingen en kostbar operasjon som bare skal kjøres ved behov. Begrens heller antall forespørsler mot wp-login.php på serveren og legg til 2FA. Det beskytter innloggingen uten å skjule den.
10.4 Sikkerhetsheadere for wp-admin
Kjernen sender allerede tre headere ved hver admin-forespørsel: X-Frame-Options: SAMEORIGIN og Content-Security-Policy: frame-ancestors 'self' fra send_frame_options_header(), og Referrer-Policy: strict-origin-when-cross-origin fra wp_admin_headers(). Det som gjenstår å legge til, er lite:
function wppoland_admin_security_headers() {
if (!headers_sent()) {
header('X-Content-Type-Options: nosniff');
}
}
add_action('admin_init', 'wppoland_admin_security_headers');Dropp X-XSS-Protection: MDN merker headeren som ikke-standard og advarer om at den kan skape XSS-sårbarheter på ellers trygge nettsteder. En full Content Security Policy for wp-admin trenger unsafe-inline, fordi kjernen skriver ut innebygde skript, og gir derfor lite der.
11. Gjøre et tregt WordPress-dashboard raskere
Et tregt admin-dashboard går ut over produktiviteten og brukeropplevelsen. Disse endringene går etter de vanlige årsakene.
11.1 Utsette lasting av tunge dashboard-widgets
Dashboard-widgets som kaller eksterne tjenester, gjør den første skjermen etter innlogging treg. “WordPress-arrangementer og -nyheter” henter data fra WordPress.org, og widgets fra utvidelser spør ofte sine egne API-er. Løsningen er å fjerne dem:
function wppoland_optimize_dashboard_widgets() {
// Remove WordPress Events and News (makes an external request)
remove_meta_box('dashboard_primary', 'dashboard', 'side');
// Remove Quick Draft (unnecessary for most clients)
remove_meta_box('dashboard_quick_press', 'dashboard', 'side');
// Only load Activity widget for users who need it
if (!current_user_can('edit_posts')) {
remove_meta_box('dashboard_activity', 'dashboard', 'normal');
}
}
add_action('wp_dashboard_setup', 'wppoland_optimize_dashboard_widgets');11.2 Redusere database-spørringer i admin
Ikke endre hovedspørringen på adminlistene: å tvinge fields => ids eller no_found_rows ødelegger innleggstabellen og sidenummereringen. Den trygge spaken er antall rader per skjerm. Brukerne stiller det inn i Visningsinnstillinger, og en grense for hele nettstedet bruker filteret edit_posts_per_page:
add_filter('edit_posts_per_page', function ($per_page, $post_type) {
return min($per_page, 50);
}, 10, 2);11.3 Objektcaching i WordPress-admin
define('WP_CACHE', true) slår ikke på objektcaching. Konstanten ber WordPress laste sidecache-tillegget advanced-cache.php. En persistent objektcache er et annet tillegg, wp-content/object-cache.php, levert av en Redis- eller Memcached-backend. Uten det lever WP_Object_Cache bare i én forespørsel. Siden WordPress 6.1 anbefaler Verktøy > Nettstedshelse en persistent objektcache når nettstedet ser stort nok ut til å ha nytte av det.
11.4 Fjerne unødvendige admin-skript og stiler
Siden WordPress 6.4 lastes emoji-stiler i admin via wp_enqueue_emoji_styles på admin_enqueue_scripts. Hvis nettstedet ikke trenger emoji-støtte i admin:
// Core adds these in wp-admin/includes/admin-filters.php, so remove them on admin_init
add_action('admin_init', function () {
remove_action('admin_print_scripts', 'print_emoji_detection_script');
remove_action('admin_enqueue_scripts', 'wp_enqueue_emoji_styles');
});Ikke avregistrer kjernehåndtak som dashboard, media-editor eller media-views på alle adminskjermer. De driver flytting av widgets og mediavinduet, og andre skjermer er avhengige av dem.
12. Slik gjør du WordPress-admin tilgjengelig
Et tilgjengelig admingrensesnitt sørger for at alle brukere kan styre nettstedet sitt, uavhengig av fysiske forutsetninger.
12.1 Tastaturnavigasjon i WordPress-admin
Kjernen skriver allerede ut to hopplenker øverst på hver adminskjerm, “Hopp til hovedinnhold” og “Hopp til verktøylinje”, så du trenger ikke legge til egne. Hver bruker kan også slå på Tastatursnarveier i profilen sin, som gir snarveier for moderering av kommentarer. Egne adminsider bør beholde den synlige fokusmarkeringen kjernen gir, i stedet for å fjerne den i CSS.
12.2 Skjermleserstøtte i WordPress-admin
Skjermlesere leser sidetittelen først, så en tydelig <title> hjelper på hver skjerm. Filteret admin_title får hele tittelen og skjermens tittel:
// Add descriptive titles to pages
function wppoland_admin_title($admin_title, $title) {
return sprintf('%s | %s', $title, esc_html(get_bloginfo('name')));
}
add_filter('admin_title', 'wppoland_admin_title', 10, 2);Bruk ekte <label>-elementer for skjemafelt og én <h1> per skjerm på egne adminsider, slik kjerneskjermene gjør.
12.3 Høykontrastmodus i WordPress-admin
Sørg for at dashboardet fungerer med høykontrastmodus:
// Support forced colors mode
function wppoland_forced_colors_support() {
echo '<style>
@media (forced-colors: active) {
.button, .button-primary, .button-secondary {
border: 2px solid ButtonText;
}
.wp-core-ui .button-primary {
background-color: Mark;
}
.metabox-holder .postbox {
border: 1px solid CanvasText;
}
}
/* Reduced motion preferences */
@media (prefers-reduced-motion: reduce) {
* {
animation-duration: 0.01ms !important;
animation-iteration-count: 1 !important;
transition-duration: 0.01ms !important;
}
}
</style>';
}
add_action('admin_head', 'wppoland_forced_colors_support');13. Nettverksadmin i WordPress multisite
WordPress multisite gir ekstra kompleksitet i navigasjon og administrasjon av dashboardet.
13.1 Forskjellen på nettverksadmin og nettstedsadmin
I multisite-installasjoner får superadministratorer en egen Nettverksadmin med egen meny:
Menypunkter i Nettverksadmin:
- Kontrollpanel: Oversikt over hele nettverket, med Oppdateringer som undermeny
- Nettsteder: Administrer alle nettstedene i nettverket
- Brukere: Brukeradministrasjon for hele nettverket
- Temaer: Aktivering av temaer for hele nettverket
- Utvidelser: Administrasjon av utvidelser for hele nettverket
- Innstillinger: Konfigurasjon av nettverket
Nettstedsspesifikk admin: Administratorer for enkeltnettsteder ser bare dashboardet for sitt nettsted med standard menypunkter. De kan ikke installere utvidelser eller temaer; de rettighetene ligger hos superadministratorene.
13.2 Legge til menypunkter i nettverksadmin for multisite
Skjermene i Nettverksadmin har sin egen hook, network_admin_menu, og rettigheten manage_network begrenser siden til superadministratorer:
// Add custom network admin menu item
function wppoland_multisite_network_menu() {
add_menu_page(
__('Network Analytics', 'wppoland'),
__('Analytics', 'wppoland'),
'manage_network',
'network-analytics',
'wppoland_network_analytics_page',
'dashicons-chart-bar',
3
);
}
add_action('network_admin_menu', 'wppoland_multisite_network_menu');Superadministratorer kommer allerede til Nettverksadmin fra menyen Mine nettsteder i verktøylinjen, så det er ikke nødvendig å legge til en lenke i menyen til hvert nettsted.
13.3 Nettstedspesifikke dashboard-widgets i multisite
Lag nettstedspesifikke dashboard-widgets i multisite:
// Add site-specific dashboard widget
function wppoland_multisite_site_widget() {
wp_add_dashboard_widget(
'site_info_widget',
sprintf(__('%s Site Information', 'wppoland'), esc_html(get_bloginfo('name'))),
'wppoland_site_widget_content'
);
}
add_action('wp_dashboard_setup', 'wppoland_multisite_site_widget');
function wppoland_site_widget_content() {
$blog_details = get_blog_details(get_current_blog_id());
echo '<table class="widefat striped">';
echo '<tr><th>' . esc_html__('Domain', 'wppoland') . '</th><td>' . esc_html($blog_details->domain . $blog_details->path) . '</td></tr>';
echo '<tr><th>' . esc_html__('Registered', 'wppoland') . '</th><td>' . esc_html($blog_details->registered) . '</td></tr>';
echo '<tr><th>' . esc_html__('Last Updated', 'wppoland') . '</th><td>' . esc_html($blog_details->last_updated) . '</td></tr>';
echo '</table>';
}Feltet domain inneholder et vertsnavn uten skjema, så det escapes som tekst og ikke som URL.
14. Organisere og dokumentere admintilpasninger
Dashboard-kode spredt i et temas functions.php forsvinner den dagen kunden bytter tema. Legg den et sted der den overlever.
14.1 Hvor koden for dashboardtilpasninger bør ligge
Samle alle dashboardtilpasninger i en must-use-utvidelse. Must-use-utvidelser lastes automatisk og kan ikke deaktiveres fra skjermen Utvidelser, og det er akkurat det kode som skal beskytte kundens adminpanel, trenger. WordPress laster bare PHP-filer som ligger direkte i mu-plugins, så én lastefil inkluderer resten:
<?php
/**
* Plugin Name: WPPoland Dashboard Customizer
* Description: Dashboard customization for client sites
* Version: 1.0.0
* Author: WPPoland
* Text Domain: wppoland
*/
// File: wp-content/mu-plugins/wppoland-dashboard-customizer.php
// Prevent direct access
if (!defined('ABSPATH')) exit;
define('WPPOLAND_DASHBOARD_VERSION', '1.0.0');
define('WPPOLAND_DASHBOARD_PATH', __DIR__ . '/wppoland-dashboard/');
// Include customization modules
require_once WPPOLAND_DASHBOARD_PATH . 'cleanup.php';
require_once WPPOLAND_DASHBOARD_PATH . 'customization.php';
require_once WPPOLAND_DASHBOARD_PATH . 'security.php';
require_once WPPOLAND_DASHBOARD_PATH . 'performance.php';14.2 Versjonering av dashboardtilpasninger
Spor alle endringer i dashboardet og legg inn en oppdateringsmekanisme:
// Dashboard customization version tracking
function wppoland_get_dashboard_version() {
return get_option('wppoland_dashboard_version', '1.0.0');
}
function wppoland_update_dashboard_settings() {
$current_version = wppoland_get_dashboard_version();
$plugin_version = WPPOLAND_DASHBOARD_VERSION;
if (version_compare($current_version, $plugin_version, '<')) {
// Run your own update routine here, then store the new version
update_option('wppoland_dashboard_version', $plugin_version);
}
}
add_action('plugins_loaded', 'wppoland_update_dashboard_settings');Hold must-use-utvidelsen i samme Git-repository som resten av koden til nettstedet, slik at hver endring i kundens adminpanel har en commit og en begrunnelse.
14.3 Legge til en hjelpefane for kunder i dashboardet
Hver adminskjerm har fanen Hjelp ved siden av Visningsinnstillinger. WP_Screen::add_help_tab() legger til eget innhold der. Hooken load-index.php begrenser fanen til dashboardskjermen:
// Add help tab to the Dashboard screen
function wppoland_add_dashboard_help_tab() {
$screen = get_current_screen();
$screen->add_help_tab([
'id' => 'wppoland_dashboard_help',
'title' => __('Dashboard Guide', 'wppoland'),
'content' => '<h3>' . __('How to Use Your Dashboard', 'wppoland') . '</h3>' .
'<p>' . __('This guide will help you navigate and manage your WordPress site.', 'wppoland') . '</p>' .
'<ul>' .
'<li><a href="edit.php">' . __('Manage Posts', 'wppoland') . '</a></li>' .
'<li><a href="edit.php?post_type=page">' . __('Manage Pages', 'wppoland') . '</a></li>' .
'<li><a href="upload.php">' . __('Media Library', 'wppoland') . '</a></li>' .
'</ul>'
]);
}
add_action('load-index.php', 'wppoland_add_dashboard_help_tab');15. Vanlige spørsmål om WordPress-dashboardet for utviklere
Hvordan tilbakestiller jeg dashboardet til standard for én bruker Visningsinnstillinger, rekkefølgen på boksene og sammenslåtte bokser ligger i metadataene til brukeren, under nøklene i avsnitt 9.4. Slett dem, så går skjermene tilbake til standard. Med WP-CLI viser wp user meta list <user> nøklene, og wp user meta delete <user> <key> fjerner én av dem. Endringer for hele nettstedet gjort i kode forsvinner først når du fjerner koden.
Kan jeg lage helt egne adminsider Ja. add_menu_page() og add_submenu_page() registrerer en skjerm med din egen funksjon, som i avsnitt 6.3. Sett rettighetsargumentet til den laveste rettigheten som skal se siden.
Hvordan skjuler jeg verktøylinjen for bestemte brukere Hver bruker kan slå av “Vis verktøylinjen når du ser på nettstedet” i profilen sin. For en hel rolle returnerer du false fra filteret show_admin_bar når current_user_can() ikke består kontrollen din. Dette gjelder bare forsiden; verktøylinjen inne i wp-admin blir værende.
Kan kunder ødelegge nettstedet fra dashboardet En administratorkonto kan det: den kan redigere temafiler, installere utvidelser og endre permalenker. Gi kunder rollen Redaktør der det er mulig, sett DISALLOW_FILE_EDIT (avsnitt 7.1) og forbehold administratorkontoer dem som vedlikeholder nettstedet.
Hva er forskjellen på Redaktør og Forfatter En forfatter publiserer og administrerer sine egne innlegg og laster opp media. En redaktør administrerer alles innlegg og sider, modererer kommentarer og administrerer kategorier. Avsnitt 4.1 viser hvilke menyer hver rolle ser.
Hvordan gjenoppretter jeg innhold som er slettet ved et uhell Slettede innlegg og sider havner først i Papirkurv. WordPress tømmer den etter 30 dager som standard, styrt av konstanten EMPTY_TRASH_DAYS. Etter det kommer innholdet bare tilbake fra en sikkerhetskopi.
Hvorfor laster dashboardet mitt tregt De vanlige årsakene er dashboard-widgets som kaller eksterne tjenester, manglende persistent objektcache og belastning fra utvidelser. Avsnitt 11.1 og 11.3 dekker de to første.
Hvordan hindrer jeg kunder i å installere egne utvidelser Ikke gi dem rollen Administrator; på et enkeltnettsted har bare administratorer install_plugins. Hvis en administratorkonto ikke kan unngås, blokkerer DISALLOW_FILE_MODS installasjoner og oppdateringer fra dashboardet for alle (avsnitt 7.1).
Hvordan legger jeg til hjelpefaner på adminsider Kall get_current_screen()->add_help_tab() på load--hooken til skjermen du vil ha, som i avsnitt 14.3.
Kan jeg tilpasse dashboardet per bruker Ja. Brukerne styrer selv Visningsinnstillinger, rekkefølgen på boksene, fargeskjemaet og om verktøylinjen vises. Kode kan forgrene seg på get_current_user_id() eller, bedre, på en rettighet, slik at oppsettet følger rollen og ikke én person.
Hvordan slår jeg på automatiske oppdateringer av utvidelser for kunder Siden WordPress 5.5 har skjermen Utvidelser lenken “Slå på auto-oppdateringer” for hver utvidelse. I kode returnerer filteret auto_update_plugin true for å oppdatere alle utvidelser, eller det avgjør per utvidelse. Merk at DISALLOW_FILE_MODS slår av automatiske oppdateringer.
Kan jeg eksportere dashboardinnstillinger til andre nettsteder Ikke gjennom en skjerm i kjernen. Den pålitelige måten er å holde tilpasningene i must-use-utvidelsen fra avsnitt 14.1 og kopiere den utvidelsen til hvert nettsted.
Hvordan håndterer jeg dashboard-problemer ved bytte av tema Kode i temaets functions.php forsvinner med temaet, så dashboardet går tilbake til standard etter et bytte. Det er hovedgrunnen til å legge adminkode i en must-use-utvidelse.
Oppsummering
Et generisk dashboard sier “Jeg installerte et tema.” Et kuratert dashboard sier “Jeg bygde en plattform for bedriften din.” Bruk tiden på å rydde det.
Viktige punkter:
- Bruk Visningsinnstillinger for å rydde opp
- Tilpass etter brukerrolle, og fjern rettigheter der det ikke holder å skjule
- Slå av filredigererne med
DISALLOW_FILE_EDIT - Legg til nyttige egendefinerte widgets
- Hold merkevaren konsistent
- Hold adminkoden i en must-use-utvidelse under versjonskontroll
- Sikre innloggingen med 2FA og begrensninger på serveren
- Fiks trege dashboard ved årsaken: widgets, objektcache, rader per side
- Ta hensyn til tilgjengelighet
- Planlegg for multisite ved behov
Oppdatert: 16. oktober 2026, kontrollert mot WordPress 7.1.3
Roller og rettigheter er den delen av dashbordet som oftest står urørt helt fra installasjonen. Vil du ha tilgangene satt opp etter måten redaksjonen faktisk jobber på, se WordPress-utvikling og oppsett av roller.







