Modul 1 · 1.3
Filer, wp-config og databasen
Modul 1: Sådan virker WordPress · Læsetid: 9 minutter
Læringsmål: Efter denne lektion kan du kende WordPress' mapper, indstillingerne i wp-config.php og de vigtigste databasetabeller, og du ved hvad du finder hvor.
Nøglebegreber: wp-admin, wp-includes, wp-content (themes, plugins, uploads, mu-plugins), wp-config.php (DB_*, table_prefix, nøgler og salts, WP_DEBUG), .htaccess, wp_options (siteurl, home), wp_posts, wp_users
To halvdele: filer og database
Et WordPress-websted består altid af to dele der hører sammen:
- Filer i webmappen for dit domæne (i DirectAdmin
domains/example.com/public_html): koden til WordPress, dine temaer, dine plugins og alt det du uploader. - En database: alle dine tekster, sider, menuer, indstillinger, brugere og kommentarer.
Denne skelnen er vigtig ved backup og flytning. En backup med kun filerne mangler alle dine tekster. En backup med kun databasen mangler alle dine billeder. Du skal bruge begge dele (lektion 8.1).
Mapperne
Åbn din webmappe i Filhåndtering eller med et FTP-program, så ser du nogenlunde dette:
public_html/
├── wp-admin/ kontrolpanelet (core)
├── wp-includes/ resten af WordPress (core)
├── wp-content/ alt det der er dit
│ ├── themes/ temaerne
│ ├── plugins/ plugins
│ ├── uploads/ dine medier, pr. år og måned: uploads/2026/11/
│ ├── mu-plugins/ "must use"-plugins (hvis de findes)
│ ├── languages/ oversættelser
│ └── upgrade/ midlertidig mappe til opdateringer
├── .htaccess regler til webserveren
├── index.php startpunktet for hver sideanmodning
├── wp-config.php indstillingerne for denne installation
├── wp-login.php login-siden
├── xmlrpc.php en gammel kobling til apps (lektion 7.3)
└── ... andre wp-*.php-filer fra coreTommelfingerreglen: wp-admin, wp-includes og de løse wp-*.php-filer tilhører WordPress. De bliver overskrevet ved hver opdatering. Læg aldrig selv noget derind, og lav ingen ændringer der.
wp-content er dit. En opdatering af WordPress lader den mappe være i fred (bortset fra standardtemaer og -plugins der følger med). Her ligger dine temaer, plugins og uploads. Nogle ting er værd at vide:
- uploads vokser hurtigst. Hvert billede du uploader, gemmer WordPress i flere formater (lektion 4.4). Et websted med nyheder i flere år kan have gigabytes af uploads.
- mu-plugins (must use) er plugins der altid er aktive, og som du ikke kan slå fra i kontrolpanelet. Nogle hostingudbydere og plugins bruger dem. Også indbrudstyve gemmer gerne noget der (lektion 7.5). Kender du ikke en fil der, så find ud af hvor den kommer fra.
- En slettet plugin forsvinder fra
plugins. En deaktiveret plugin bliver liggende, med al sin kode (lektion 5.4).
wp-config.php: indstillingerne
wp-config.php er det første WordPress indlæser. Her står oplysningerne som WordPress bruger til at få adgang til databasen, og nogle indstillinger for hele installationen. En forkortet version:
define( 'DB_NAME', 'gebruiker_wp1' );
define( 'DB_USER', 'gebruiker_wp1' );
define( 'DB_PASSWORD', 'en-lang-tilfaeldig-adgangskode' );
define( 'DB_HOST', 'localhost' );
define( 'DB_CHARSET', 'utf8mb4' );
define( 'AUTH_KEY', 'lang tilfældig tekst' );
define( 'SECURE_AUTH_KEY', 'lang tilfældig tekst' );
define( 'LOGGED_IN_KEY', 'lang tilfældig tekst' );
define( 'NONCE_KEY', 'lang tilfældig tekst' );
define( 'AUTH_SALT', 'lang tilfældig tekst' );
define( 'SECURE_AUTH_SALT', 'lang tilfældig tekst' );
define( 'LOGGED_IN_SALT', 'lang tilfældig tekst' );
define( 'NONCE_SALT', 'lang tilfældig tekst' );
$table_prefix = 'wp_';
define( 'WP_DEBUG', false );
/* Dat is alles, stop met bewerken! */
require_once ABSPATH . 'wp-settings.php';Hvad det betyder:
- DB_NAME, DB_USER, DB_PASSWORD, DB_HOST: med hvilken database, bruger og adgangskode WordPress forbinder, og på hvilken server. Stemmer en af dem ikke, ser du "Error establishing a database connection". Det sker ofte efter en flytning eller efter ændring af en databaseadgangskode.
- Nøglerne og salts (de otte linjer med KEY og SALT): tilfældige tekster som WordPress bruger til at underskrive login-cookies med. Den der kender dem, kan i teorien lave en gyldig login-cookie. Udskifter du dem, bliver alle logget ud. Det er præcis det du gør efter et hack (lektion 7.5). Nye værdier henter du på
https://api.wordpress.org/secret-key/1.1/salt/. - $table_prefix: præfikset på alle tabelnavne, som regel
wp_. Sådan kan flere installationer dele én database. At vælge et andet præfiks er ikke rigtig sikkerhed, men det skader heller ikke. - WP_DEBUG: slår fejlmeddelelser til. På et website i produktion er dette slået fra (
false). Hvordan du ser fejl på en sikker måde uden at vise dem til besøgende, kan du læse i lektion 5.4. - Indstillinger du selv tilføjer (for eksempel
DISALLOW_FILE_EDITi lektion 7.4 ellerDISABLE_WP_CRONi lektion 6.3) hører til over linjen "stop met bewerken" (stop med at redigere).
wp-config.php indeholder din databaseadgangskode. Del aldrig filen, læg ikke en kopi af den i webmappen (som wp-config.php.bak eller wp-config.old: den kan alle hente, fordi webserveren ikke udfører den som PHP), og giv den strenge filrettigheder (lektion 7.4).
.htaccess
Med LiteSpeed og Apache ligger der en .htaccess-fil i webmappen med regler til webserveren. Den starter med et punktum, så den er skjult i mange programmer. WordPress sætter denne blok ind for pæne adresser (permalinks):
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPressSagt enkelt: "er det ikke en eksisterende fil (!-f) og ikke en eksisterende mappe (!-d), så send det til index.php." Det er trin 2 fra lektion 1.2. Plugins (caching, sikkerhed) tilføjer ofte egne blokke. Sæt dine egne regler uden for blokkene fra WordPress og plugins, for de blokke bliver nogle gange skrevet om. Hos nginx findes .htaccess ikke; der ordner hostingudbyderen dette i serverkonfigurationen.
Databasen: hvilken tabel til hvad
Med phpMyAdmin (i DirectAdmin under Databasehåndtering) kan du se databasen. En almindelig installation har tolv tabeller; plugins tilføjer ofte flere. De vigtigste:
| Tabel | Hvad der står i den |
|---|---|
wp_posts | Indlæg, sider, revisioner, menupunkter, og ved bloktemaer også skabeloner og mønstre. Også billeder er her et "indlæg" af typen attachment |
wp_postmeta | Ekstra oplysninger til indlæg, som prisen på et produkt eller indstillinger fra en sidebygger |
wp_options | Indstillinger for webstedet og for plugins. Her står siteurl og home (lektion 3.1), navnet på det aktive tema og listen over aktive plugins |
wp_users og wp_usermeta | Brugere, deres (krypterede) adgangskoder og deres rolle |
wp_terms, wp_term_taxonomy, wp_term_relationships | Kategorier, tags og hvilke indlæg der hører til dem |
wp_comments og wp_commentmeta | Kommentarer |
To nyttige ting at vide. For det første: i wp_options står siteurl og home. Hvis de er forkerte (for eksempel efter en flytning), sender dit websted alle hen til den forkerte adresse, og du kan ikke længere komme ind i administrationen. Så kan du rette dem i phpMyAdmin eller med regler i wp-config.php (lektion 3.1). For det andet: mange indstillinger gemmes serialiseret, en PHP-form hvor længden af hver tekst tælles med. Retter du sådan en værdi i hånden, eller kører du en simpel "søg og erstat" på databasen, så stemmer længden ikke længere, og indstillingen går i stykker (lektion 3.2).
At kigge i phpMyAdmin er sikkert. Ændringer skal du kun lave hvis du ved hvad du gør, og altid med en backup.
I praksis: sådan ser det ud i et panel
Som eksempel bruger vi DirectAdmin. I cPanel og Plesk hedder delene Filhåndtering (File Manager) og phpMyAdmin også sådan.
- Åbn Filhåndtering og gå til
domains/example.com/public_html. Slå visning af skjulte filer til for at se.htaccess. - Klik på
wp-config.php, og vælg at se den (ikke redigere). FindDB_NAMEog$table_prefix. - Åbn phpMyAdmin, vælg til venstre databasen med det navn, og se hvilke tabeller der findes.
- Klik på tabellen
wp_options(med dit præfiks), og find rækkernesiteurloghome.
Opsummering
- Et WordPress-websted er filer plus database; en backup kræver begge dele.
wp-admin,wp-includesog de løse core-filer tilhører WordPress;wp-contenter dit.- wp-config.php indeholder databaseoplysningerne, nøglerne og salts, tabelpræfikset og indstillinger som WP_DEBUG. Opbevar aldrig en kopi af den i webmappen.
.htaccesssender alt der ikke er en fil, til index.php; egne regler sætter du uden for blokkene fra WordPress.- I
wp_optionsstår siteurl og home; serialiserede data retter du ikke i hånden.
Quiz
Opgave
Opgave D1.3: Udforsk din egen installation. Åbn din webmappe i Filhåndtering eller med et FTP-program, og derefter din database i phpMyAdmin. Lav ikke andet end at kigge. Noter hvad du har fundet, og udfyld: tabelpræfikset, antallet af tabeller i databasen, værdierne af siteurl og home i wp_options, og mapperne i wp-content. Skriv også ned om der ligger filer i wp-content/mu-plugins, og om du ved hvor de kommer fra. Del aldrig din databaseadgangskode, heller ikke i denne formular.
Opgave D1.3: Udforsk din egen installation
Denne opgave laver du selv; ingen tjekker den. Afkryds hvad du har gjort, og markér opgaven som udført.
Præfikset slutter med en underscore (for eksempel wp_ eller en tilfældig kode). En almindelig installation har 12 tabeller; plugins tilføjer flere. siteurl og home starter med https://. Del aldrig databasekodeordet fra wp-config.php, heller ikke her.
Dine afkrydsninger og noter forbliver kun i denne browser; vi sender dem ingen steder hen. Er du logget ind, gemmer vi kun i Mine kurser, at du har udført opgaven.
Læs mere
Disse artikler beskriver trinnene i WebOkés paneler; i andre paneler fungerer det på lignende måde.
- DirectAdmin vejledning 11.1: Åbn Filhåndtering: mapperne i din pakke
- DirectAdmin vejledning 11.4: Sådan viser og redigerer du skjulte filer som .htaccess
- DirectAdmin vejledning 12.3: phpMyAdmin åbne og bruge
- Hvad er brugernavn / adgangskode / databasenavn til MySQL?
- DirectAdmin vejledning 18.6: Fejl ved oprettelse af databaseforbindelse
- wp-config.php (developer.wordpress.org, engelsk): https://developer.wordpress.org/advanced-administration/wordpress/wp-config/
