---
title: "WordPress Child-Theme anlegen: Theme-Updates ohne Verlust eigener Anpassungen"
date: 2026-09-30T21:06:38+02:00
modified: 2026-11-10T17:19:11+01:00
category: wordpress
type: how_to
author: Marcel Schönfelder
canonical: https://s-edv.com/anleitungen/wordpress-child-theme-anlegen-theme-updates-anpassungen-behalten
keywords:
  - WordPress
  - Child-Theme
  - Theme-Updates
  - WP-CLI
  - Wartung
reading_time: 9
---

# WordPress Child-Theme anlegen: Theme-Updates ohne Verlust eigener Anpassungen

Wer eigene Anpassungen direkt in die Dateien eines Themes schreibt, verliert sie beim nächsten Theme-Update. WordPress ersetzt beim Update den kompletten Theme-Ordner, geänderte Dateien werden dabei ohne Rückfrage überschrieben. Ein Child-Theme löst das Problem: Es erbt alles vom Eltern-Theme, enthält aber nur Ihre eigenen Änderungen in einem eigenen Ordner, den kein Update berührt. Diese Anleitung zeigt, wie Sie ein Child-Theme anlegen, bestehende Anpassungen umziehen und was beim Wechsel mit Stilen aus dem Website-Editor und zusätzlichem CSS passiert. Alle Schritte wurden im Labor mit WordPress 7.1.2 und dem Theme Twenty Twenty-Five geprüft.

**Kurzfassung:** Ändern Sie nie Dateien im Ordner des Eltern-Themes, ein Update löscht diese Änderungen. Legen Sie mit `wp scaffold child-theme` oder von Hand einen Ordner mit `style.css` an, dessen Kopfzeile `Template:` exakt dem Ordnernamen des Eltern-Themes entspricht. Eigener PHP-Code kommt in die `functions.php` des Child-Themes, geänderte Vorlagen als gleichnamige Datei in denselben Unterordner. Zusätzliches CSS und Stile aus dem Website-Editor speichert WordPress je Theme, beides müssen Sie beim Wechsel übernehmen. Danach können Sie das Eltern-Theme normal aktualisieren.

## Voraussetzungen

- [ ] **WordPress:** eine aktuelle Installation, getestet mit WordPress 7.1.2 in deutscher Sprache.
- [ ] **PHP:** die Version Ihres Hostings, im Labor PHP 8.4. Twenty Twenty-Five verlangt laut Kopfzeile mindestens PHP 7.2 und WordPress 6.7.
- [ ] **Zugriff:** SFTP oder SSH auf das Verzeichnis `wp-content/themes`. WP-CLI (getestet mit 2.12.0) ist optional, spart aber Tipparbeit.
- [ ] **Rechte:** Administrator in WordPress.
- [ ] **Backup:** eine aktuelle Sicherung von Dateien und Datenbank. Der Theme-Wechsel verschiebt Widgets und Stile, eine Sicherung macht das umkehrbar.
- [ ] **Testumgebung:** empfohlen. Wie Sie eine Kopie Ihrer Website anlegen, zeigt die Anleitung [WordPress-Staging-Umgebung per WP-CLI einrichten](https://s-edv.com/anleitungen/wordpress-staging-umgebung-wp-cli-einrichten).

## Schritt 1: Prüfen, ob Anpassungen im Eltern-Theme stecken

Bevor Sie ein Child-Theme anlegen, klären Sie, ob bereits jemand Dateien des Themes geändert hat. Das ist der Fall, den das nächste Update zerstört. Im Labor wurde eine Zeile an die `style.css` von Twenty Twenty-Five 1.4 angehängt und das Theme danach per WP-CLI auf 1.5 aktualisiert. Die Zeile war anschließend verschwunden, WP-CLI meldete dabei nur „Die alte Version des Themes wird entfernt ...“ und „Das Theme wurde erfolgreich aktualisiert.“ Eine Warnung gibt es nicht.

Für Themes gibt es keinen Prüfsummen-Befehl wie für den WordPress-Kern. Vergleichen Sie deshalb mit dem Original: Ermitteln Sie die installierte Version, laden Sie genau diese Version als ZIP von der Theme-Seite auf wordpress.org, entpacken Sie sie außerhalb des Webverzeichnisses und vergleichen Sie beide Ordner. Installieren Sie das Original nicht mit `--force` über das vorhandene Theme, das würde die Anpassungen löschen, die Sie gerade suchen.

```bash
wp theme list --fields=name,status,version
mkdir -p ~/theme-vergleich && cd ~/theme-vergleich
unzip -q twentytwentyfive.1.5.zip
diff -rq twentytwentyfive /var/www/html/wp-content/themes/twentytwentyfive
```

Jede Zeile der Ausgabe von `diff -rq` nennt eine geänderte oder zusätzliche Datei. Das sind die Anpassungen, die Sie in Schritt 3 umziehen.

> **Prüfen:** Sie haben eine Liste der geänderten Dateien oder wissen sicher, dass das Eltern-Theme unverändert ist.

## Schritt 2: Child-Theme anlegen

Ein Child-Theme braucht nur einen Ordner und eine `style.css` mit Kopfzeile. Entscheidend ist das Feld `Template`: Es muss exakt dem Ordnernamen des Eltern-Themes in `wp-content/themes` entsprechen, nicht dessen Anzeigenamen. Für Twenty Twenty-Five lautet der Wert also `twentytwentyfive`. Mit WP-CLI erzeugt ein Befehl Ordner, `style.css` und `functions.php`:

Datei: `functions.php`

```bash
wp scaffold child-theme meine-firma --parent_theme=twentytwentyfive --theme_name="Meine Firma"
```

Im Labor meldete WP-CLI `Success: Created '/var/www/html/wp-content/themes/meine-firma'.` und legte diese Kopfzeile an:

```plaintext
/*
Theme Name:     Meine Firma
Theme URI:
Description:    Twentytwentyfive child theme.
Author:         Me
Author URI:
Template:       twentytwentyfive
Version:        0.1.0
*/
```

Ohne WP-CLI legen Sie den Ordner per SFTP an und erstellen die `style.css` mit mindestens den Zeilen `Theme Name` und `Template`. Die erzeugte `functions.php` lädt zuerst das Stylesheet des Eltern-Themes und danach das eigene. Das Theme-Handbuch weist darauf hin, dass Block-Themes ihre Gestaltung meist über `theme.json` regeln und die `style.css` dann oft gar nicht laden. Ob Sie das Stylesheet einbinden müssen, hängt also vom Eltern-Theme ab. Im Labor bindet die Scaffold-Variante das Child-Stylesheet zuverlässig ein, der Seitenquelltext enthielt danach `meine-firma/style.css?ver=0.1.0`.

Tragen Sie bei `Author` Ihr Unternehmen ein und erhöhen Sie `Version` bei jeder Änderung. Die Version hängt WordPress an die CSS-Adresse an, dadurch laden Browser nach einer Änderung die neue Datei statt einer zwischengespeicherten.

> **Prüfen:** Unter *Design > Themes* erscheint „Meine Firma“ als eigene Kachel. `wp theme list` zeigt das Theme mit Status `inactive`.

## Schritt 3: Anpassungen in das Child-Theme übertragen

Je nach Art der Änderung gibt es einen festen Platz im Child-Theme. Die Regeln stammen aus dem Theme-Handbuch und wurden im Labor nachvollzogen:

| Anpassung | Ort im Child-Theme | Verhalten |
| --- | --- | --- |
| CSS | `style.css` | wird nach dem Eltern-Stylesheet geladen |
| PHP-Funktionen, Hooks | `functions.php` | wird zusätzlich geladen, direkt vor der des Eltern-Themes |
| Vorlagen, Vorlagenteile, Muster | gleicher Pfad wie im Eltern-Theme, z. B. `parts/footer.html` | ersetzt die Datei des Eltern-Themes |
| Farben, Schriften, Abstände (Block-Theme) | `theme.json` | ergänzt die Einstellungen des Eltern-Themes |

Der wichtigste Unterschied betrifft die `functions.php`. Sie ersetzt die Datei des Eltern-Themes nicht, beide werden geladen. Kopieren Sie deshalb nie die komplette `functions.php` des Eltern-Themes in das Child-Theme. Übernehmen Sie nur Ihren eigenen Code. Twenty Twenty-Five umschließt seine Funktionen mit `if ( ! function_exists( ... ) )`, solche Funktionen dürfen Sie im Child-Theme gezielt neu definieren, weil dessen `functions.php` zuerst geladen wird. Bei Funktionen ohne diese Prüfung führt ein doppelter Name zu einem schweren Fehler.

Für Vorlagen kopieren Sie die Datei aus dem Eltern-Theme an denselben relativen Pfad und ändern nur die Kopie. Im Labor wurde `parts/footer.html` in das Child-Theme kopiert und um einen Absatz ergänzt. Die Startseite zeigte danach die geänderte Fußzeile, das Eltern-Theme blieb unverändert. Bedenken Sie den Preis: Kopierte Vorlagen erhalten keine Verbesserungen mehr aus Updates des Eltern-Themes. Kopieren Sie deshalb nur, was Sie wirklich ändern müssen.

> **Prüfen:** Ihre Anpassungen liegen ausschließlich im Ordner des Child-Themes, und `php -l functions.php` im Child-Ordner meldet `No syntax errors detected`.

## Schritt 4: Child-Theme aktivieren und Einstellungen übernehmen

Aktivieren Sie das Child-Theme unter *Design > Themes* mit „Aktivieren“ oder per WP-CLI mit `wp theme activate meine-firma`. Das Eltern-Theme bleibt installiert und muss es auch bleiben. Im Labor verweigerte WP-CLI das Löschen mit `Warning: Can't delete the parent of the currently active theme: twentytwentyfive`.

Einige Einstellungen speichert WordPress nicht global, sondern je Theme. Nach der Aktivierung fehlen sie scheinbar. Drei Punkte zeigten sich im Labor:

- **Zusätzliches CSS:** Das CSS aus *Design > Anpassen > Zusätzliches CSS* liegt in einem eigenen Datensatz pro Theme. Nach dem Wechsel war es auf der Website nicht mehr zu sehen. Übernehmen lässt es sich per WP-CLI in einem Befehl:

```bash
$ wp eval 'wp_update_custom_css_post( wp_get_custom_css( "twentytwentyfive" ) );'
```

- **Stile aus dem Website-Editor:** Anpassungen unter *Design > Editor > Stile* speichert WordPress in einem Datensatz mit dem Namen `wp-global-styles-` und dem Ordnernamen des Themes. Beim Aktivieren des Child-Themes legte WordPress im Labor einen neuen, leeren Datensatz `wp-global-styles-meine-firma` an, die Stile des Eltern-Themes blieben im alten Datensatz. Notieren Sie Ihre Farben und Schriften vor dem Wechsel und stellen Sie sie im Child-Theme erneut ein, oder übertragen Sie sie dauerhaft in dessen `theme.json`.
- **Widgets:** In den Theme-Einstellungen des Child-Themes lagen nach dem Wechsel alle Widgets unter „inaktiv“. Hat Ihr Theme Widget-Bereiche, ordnen Sie sie unter *Design > Widgets* wieder zu.

Weil Stile und Einstellungen je Theme gespeichert werden, gilt: Legen Sie das Child-Theme an, bevor Sie mit größeren Anpassungen im Website-Editor beginnen. Bei neuen Websites spart das die Nacharbeit vollständig.

> **Prüfen:** `wp theme status meine-firma` zeigt `Status: Active`. Die Website sieht aus wie vor dem Wechsel, und im Quelltext der Startseite findet sich Ihr zusätzliches CSS.

## Schritt 5: Eltern-Theme gefahrlos aktualisieren

Ab jetzt aktualisieren Sie das Eltern-Theme wie jedes andere, im Backend unter *Dashboard > Aktualisierungen* oder per `wp theme update twentytwentyfive`. Das Child-Theme selbst erhält keine Updates, es gehört Ihnen. Prüfen Sie nach jedem Update die Seiten, deren Vorlagen Sie kopiert haben: Ändert das Eltern-Theme dort Strukturen, passt Ihre Kopie womöglich nicht mehr dazu. Ein Test auf der Staging-Kopie vor dem Live-Update ist hier besonders sinnvoll. Wie Sie Theme-Updates per Kommandozeile einspielen, beschreibt die Anleitung [WordPress-Updates per WP-CLI](https://s-edv.com/anleitungen/wordpress-updates-wp-cli-core-plugins-themes).

Theme-Updates gehören damit zur regelmäßigen Pflege wie Plugin- und Core-Updates, samt Sicherung vorher und Sichtprüfung danach. Wer diese Routine nicht selbst im Kalender halten möchte, kann sie abgeben: Die [WordPress-Wartung von wordpressupdate.de](https://wordpressupdate.de/?utm_source=s-edv.com&utm_medium=artikel&utm_campaign=15) übernimmt Updates von WordPress, Plugins und Themes mit Kompatibilitätsprüfung und erstellt wöchentliche Backups auf externem Speicher.

> **Prüfen:** Nach dem Update zeigt `wp theme list` die neue Version des Eltern-Themes, das Child-Theme ist weiter aktiv, und Ihre Anpassungen sind sichtbar.

## Typische Fehler

**„Das übergeordnete Theme fehlt. Bitte installiere das übergeordnete Theme …“**

Der Wert bei `Template` stimmt nicht mit dem Ordnernamen überein. Im Labor löste `Template: twenty-twenty-five` genau diese Meldung aus, `wp theme activate` brach ab. Korrigieren Sie den Wert auf den exakten Ordnernamen.

**„Auf dieser Website ist ein kritischer Fehler aufgetreten.“ nach Änderung der `functions.php`**

Meist ein doppelter Funktionsname. Das Fehlerprotokoll zeigte im Labor `PHP Fatal error: Cannot redeclare function get_header() (previously declared in /var/www/html/wp-includes/general-template.php:27)`. Benennen Sie eigene Funktionen mit einem eindeutigen Präfix, etwa `meine_firma_`. Wie Sie das Protokoll aktivieren, zeigt [WordPress Debug-Modus aktivieren](https://s-edv.com/anleitungen/wordpress-debug-modus-error-logs-fehler-beheben).

**Das Child-CSS greift nicht**

Das Stylesheet wird nicht geladen, oder der Browser nutzt eine alte Kopie. Prüfen Sie im Quelltext, ob `style.css` des Child-Themes eingebunden ist, und erhöhen Sie die `Version`.

**Nach dem Wechsel fehlen Farben oder zusätzliches CSS**

Diese Einstellungen hängen am Theme, siehe Schritt 4.

**Das Eltern-Theme lässt sich nicht löschen**

Das ist gewollt. Ein Child-Theme funktioniert nur mit installiertem Eltern-Theme.

## Häufige Fragen

### Brauche ich bei einem Block-Theme überhaupt ein Child-Theme?

Nicht immer. Änderungen im Website-Editor speichert WordPress in der Datenbank, ein Theme-Update überschreibt sie nicht. Ein Child-Theme brauchen Sie, sobald Sie Dateien ändern: eigenes PHP, eigene Vorlagen als Datei oder eine eigene `theme.json`.

### Reicht nicht ein Plugin für eigenes CSS oder eigene Funktionen?

Für einzelne Code-Schnipsel, die unabhängig vom Theme sind, ist ein kleines eigenes Plugin sogar die bessere Wahl, weil es einen Theme-Wechsel übersteht. Gestaltung und Vorlagen gehören dagegen ins Child-Theme.

### Kann ich ein Child-Theme von einem Child-Theme ableiten?

Nein. Das Theme-Handbuch kennt nur zwei Ebenen, Eltern- und Child-Theme.

### Was passiert, wenn der Theme-Anbieter die Entwicklung einstellt?

Das Child-Theme hängt dann an einem Eltern-Theme ohne Sicherheitsupdates. Planen Sie in diesem Fall einen Wechsel auf ein gepflegtes Theme. Das Handbuch empfiehlt bei sehr umfangreichen Anpassungen ohnehin, ein eigenes vollständiges Theme zu erwägen.

## Fazit

Ein Child-Theme kostet wenige Minuten und schützt jede Datei-Anpassung vor dem nächsten Theme-Update. Achten Sie auf den exakten Ordnernamen bei `Template`, übernehmen Sie nur eigenen Code in die `functions.php` und denken Sie daran, dass zusätzliches CSS und Website-Editor-Stile je Theme gespeichert werden. Wenn Sie Theme-, Plugin- und Core-Updates lieber abgeben möchten, übernimmt das die [WordPress-Wartung von Marcel Schönfelder](https://wordpressupdate.de/?utm_source=s-edv.com&utm_medium=fazit&utm_campaign=15).

## Weiterführende Anleitungen und Quellen

- [WordPress-Staging-Umgebung per WP-CLI einrichten](https://s-edv.com/anleitungen/wordpress-staging-umgebung-wp-cli-einrichten)
- [WordPress-Updates per WP-CLI: Core, Plugins und Themes](https://s-edv.com/anleitungen/wordpress-updates-wp-cli-core-plugins-themes)
- [WordPress Debug-Modus aktivieren: Error-Logs analysieren](https://s-edv.com/anleitungen/wordpress-debug-modus-error-logs-fehler-beheben)
- [WordPress Theme Handbook: Child Themes](https://developer.wordpress.org/themes/advanced-topics/child-themes/)
- [WP-CLI-Handbuch: wp scaffold child-theme](https://developer.wordpress.org/cli/commands/scaffold/child-theme/)
- [WordPress Developer Reference: wp_update_custom_css_post()](https://developer.wordpress.org/reference/functions/wp_update_custom_css_post/)
