Was laufende WordPress-Wartung umfasst
WordPress-Wartung besteht aus vier Arbeiten, die nur lose zusammenhängen: Core-Updates, Plugin- und Theme-Pflege, Pflege des Unterbaus und Redaktionssupport. Entscheidend ist bei den ersten beiden die Reihenfolge. Vor dem Core-Update steht die Prüfung, ob die eingesetzten Plugins die Zielversion tragen — nicht danach. Im Update-Fenster arbeiten wir deshalb in Schritten: Backup ziehen, Staging-Kopie auf den Live-Stand bringen, Plugins einzeln oder in kleinen Gruppen aktualisieren, dann den Core, dann das Theme neu bauen. Wer stattdessen einmal auf „Alle aktualisieren" klickt, hat bei einem Fehler zwölf Verdächtige und keinen Befund. Der Rollback-Weg wird vor dem Fenster festgelegt, nicht während der Störung gesucht.
Backups sind der Teil der Wartung, bei dem am meisten Vertrauen und am wenigsten Prüfung stattfindet. Zu einem Backup gehören drei Dinge: der Datenbankdump, das Verzeichnis wp-content mit Uploads, Themes und Plugins, und die wp-config.php. Zu einem Rücksicherungstest gehört mehr: Das Archiv wird auf einer Staging-Umgebung tatsächlich eingespielt, danach werden Login, Medienbibliothek, ein Formularversand und die Startseite geprüft. Erst dann ist belegt, dass die Kette funktioniert. Wir legen die Aufbewahrungsdauer schriftlich fest, halten die Sicherungen getrennt vom Produktivsystem und protokollieren jeden Test. Ein Backup, das auf demselben Server liegt wie die Installation, deckt Defekte ab, aber keine Kompromittierung.
Der Unterbau altert unabhängig von WordPress und wird deshalb regelmäßig übersehen. WordPress empfiehlt auf der eigenen Anforderungsseite PHP 8.3 oder neuer und MariaDB ab 10.11 beziehungsweise MySQL ab 8.0 (Abruf 17.08.2026). Die technischen Mindestwerte liegen mit PHP 7.4 und MySQL 5.5.5 deutlich darunter — das sind Versionen, die selbst keine Sicherheitsupdates mehr erhalten, und WordPress weist auf derselben Seite ausdrücklich darauf hin. Dazu gehören TLS-Zertifikate und ihre Erneuerung, die Frage, ob WP-Cron über Seitenaufrufe oder über einen Systemcron läuft, und der Mailversand: wp_mail() verschickt über PHPMailer, standardmäßig über die PHP-Funktion mail(), was bei heutigen Empfängern regelmäßig scheitert — ein authentifizierter SMTP-Weg mit SPF, DKIM und DMARC gehört zur Wartung, nicht in ein Extraprojekt. Monitoring heißt bei uns entsprechend mehr als ein Ping: Erreichbarkeit, Statuscodes, Zertifikatslaufzeit, Cronjobs, Mailversand und Fehlerraten im Log.
Die Angriffsfläche sitzt im Plugin-Umfeld
Der WordPress-Core ist kein Sorgenkind, und es hilft niemandem, ihn dazu zu machen. Minor-Releases werden seit Version 3.7 automatisch verteilt, Sicherheitsfixes notfalls mit erzwungenem Update — so lief es bei 7.0.2 am 17.07.2026. Von den 11.334 Schwachstellen, die Patchstack für 2025 im WordPress-Umfeld zählt, lagen 91 Prozent in Plugins und 9 Prozent in Themes; auf den Core entfielen sechs Meldungen im ganzen Jahr, alle niedrig priorisiert. 1.966 Meldungen, also 17 Prozent, waren als hoch eingestuft, das heißt: mit einer realistischen Aussicht, in automatisierten Massenangriffen ausgenutzt zu werden. Das bedeutet nicht, dass im Core nichts passiert — 7.0.3 vom 06.08.2026 brachte rund ein Dutzend Sicherheitskorrekturen auf einmal, teils an Code, der bis in ältere Hauptversionen zurückreicht. Der Unterschied liegt im Weg: Beim Core erscheint der Fix zusammen mit der Meldung und verteilt sich automatisch. Wer über WordPress-Sicherheit redet und dabei über Core-Versionen redet, redet über den kleineren Teil des Problems.
Die für den Betrieb unangenehmste Zahl aus demselben Bericht: Bei 46 Prozent der Schwachstellen lag zum Zeitpunkt der Veröffentlichung kein Patch vor. Für ein Update-Fenster heißt das, dass „warten, bis das Update kommt" keine Strategie ist. Es gibt dann drei Möglichkeiten — die Funktion vorübergehend abschalten, die betroffene Komponente ersetzen, oder den Angriffsweg vorgelagert blockieren. Welche davon greift, entscheidet sich am konkreten Fall. Dazu kommt das strukturelle Problem der unbetreuten Erweiterungen. WordPress.org setzt auf die Plugin-Seite einen Hinweis, wenn eine Erweiterung nicht mit den letzten drei Hauptversionen getestet ist. Dieser Hinweis hängt am Feld „Tested up to" in der readme.txt — ein Entwickler kann ihn entfernen, ohne eine Zeile Code angefasst zu haben. Als Warnsignal ist er nützlich, als Freigabe ist er nichts wert.
Für ein Plugin ohne Betreuer gibt es vier Wege, und wir benennen sie einzeln: eine gepflegte Alternative einsetzen, die Funktion ins eigene Theme holen, den Code selbst übernehmen und weiterpflegen, oder die Funktion streichen, weil sie ohnehin niemand nutzt. Der letzte Fall kommt häufiger vor, als man denkt. Was nicht dazugehört: pauschal jedes Plugin auszutauschen, das ein Jahr kein Release hatte. Ein kleines Hilfsplugin, dessen Code man in einer Sitzung liest, ist ein anderes Risiko als ein Formular- oder Shop-Plugin mit eigener Datenbanktabelle und Zugriff auf Bestelldaten. Die Bewertung machen wir am Code, nicht am Datum. Steht am Ende eine Eigenentwicklung, ist das ein eigenes Vorhaben — dazu steht mehr auf unserer Seite zu WordPress-Plugins und -Erweiterungen.
Warum „es läuft doch" bei WordPress besonders trügerisch ist
Bei einem System, das sich nicht selbst aktualisiert, merkt man den Stillstand irgendwann. WordPress dagegen bewegt sich, auch wenn niemand hinsieht. Minor-Releases kommen seit 3.7 automatisch. Seit Version 5.6 sind bei neuen Installationen zusätzlich die automatischen Updates für Major-Releases voreingestellt, sofern WordPress keinen Version-Control-Checkout erkennt; bestehende Installationen behalten das alte Verhalten, bis ein Administrator, eine Konstante oder ein Filter es umstellt. Praktisch bedeutet das: Manche Installation ist von 6.x auf 7.0 gewandert, ohne dass jemand eine Entscheidung getroffen hätte. Der Core ist damit aktuell. Die Plugins, das Theme und der Custom-Code sind es nicht — und dass sie zueinander noch passen, prüft kein Automatismus.
Wo das bricht, sieht man von außen nicht. WordPress 7.1 ist für den 19.08.2026 angekündigt und bringt drei Bruchstellen, die vor allem Backend und Editor betreffen. Erstens: Der Post-Editor läuft dann immer in einem iframe — unabhängig vom Theme-Typ, von der Block-API-Version der registrierten Blöcke und der im Inhalt verwendeten Blöcke. Code, der auf das globale document oder window zugreift, findet den Editor-Inhalt dort nicht mehr; der Weg führt über ownerDocument und dessen defaultView an einem Element im Canvas, Event-Listener über useRefEffect. Zweitens: In den Listentabellen wandert das führende th mit scope="row" von der Checkbox- in die Titelspalte — die Checkbox-Zelle wird ein td, die Titelzelle ein th mit aria-label. Das ist Markup, das dort seit 2010 im Wesentlichen unverändert war; Erweiterungen, die auf th.check-column oder auf th input[type="checkbox"] selektieren, greifen ins Leere. Drittens: Die Eigenschaft __next40pxDefaultSize ist wirkungslos geworden, Formularelemente rendern unbedingt mit 40 Pixeln — auch __next40pxDefaultSize={ false } schaltet nicht mehr auf 36 Pixel zurück. Ein verbreiteter Irrtum gehört korrigiert: React 19 kommt nicht in 7.1. Das Upgrade wurde zurückgenommen, nachdem Inkompatibilitäten zwischen alter und neuer React-Fassung und in der Art, wie Plugins React einbinden, auftraten. 7.1 bleibt auf React 18.3; Gutenberg bietet ein experimentelles Flag zum Testen. Was der Sprung selbst an Arbeit bedeutet, steht auf unserer Seite zum WordPress-Update auf 7.1 — hier geht es um die Folge für den laufenden Betrieb.
Diese Fehler treffen Redakteure, nicht Besucher — und Redakteure melden sie oft nicht, sondern weichen aus. Genauso verhalten sich die stillen Ausfälle im Betrieb: Der Mailversand des Kontaktformulars scheitert, aber die Dankeseite erscheint trotzdem. WP-Cron läuft nicht mehr, also erscheinen geplante Beiträge nicht und Backups laufen nicht an. Ein Redirect-Plugin verliert seine Tabelle, und alte URLs enden im 404. Alles davon lässt eine Website normal aussehen. Deshalb prüft Wartung nicht, ob die Startseite lädt, sondern die Funktionen, an denen Geld oder Anfragen hängen. Und deshalb ist der Satz „es läuft doch" bei WordPress kein Befund, sondern eine Vermutung.
Wenn eine Installation befallen ist
Ein befallenes WordPress erkennt man selten am Aussehen. Die typischen Muster sind auf Unauffälligkeit gebaut: Weiterleitungen, die nur bei einem Suchmaschinen-Referrer oder bestimmten User-Agents greifen, während der direkte Aufruf normal aussieht. In den Footer oder in Beitragsinhalte eingefügte Links auf fremde Seiten, per CSS aus dem Sichtfeld geschoben. Mailversand über den Server, bis die IP auf Sperrlisten landet und die eigene Geschäftspost nicht mehr ankommt. Dazu die Spuren, die man suchen muss: PHP-Dateien unter wp-content/uploads, ein unerwartetes Verzeichnis wp-content/mu-plugins, dessen Inhalt WordPress ohne Aktivierung lädt, obfuskierter Code am Anfang der functions.php, ein Administratorkonto mit unauffälligem Namen und neuem Anmeldedatum, ein zusätzlicher Cron-Eintrag. Der erste Hinweis kommt in der Praxis von außen: aus der Search Console, vom Hoster oder von einem Kunden, dessen Virenscanner meldet.
Die Reihenfolge im Verdachtsfall ist festgelegt, weil unter Zeitdruck sonst die falschen Dinge zuerst passieren. Erstens: Installation in den Wartungsmodus oder vom Netz nehmen. Zweitens: einen Snapshot des befallenen Zustands sichern, statt ihn zu überschreiben — er ist die einzige Grundlage für die Frage, was passiert ist, und bei einer Meldung an die Aufsichtsbehörde die einzige Beweislage. Drittens: Zugänge entziehen. Passwörter aller Redaktions- und Administratorkonten, Application Passwords, Datenbankbenutzer, SFTP- und SSH-Schlüssel, dazu die Salts und Keys in der wp-config.php, was alle bestehenden Sitzungen beendet. Viertens: Bestandsaufnahme gegen einen bekannten Stand — Core-Dateien und Plugins aus dem Original vergleichen, Benutzerliste, Cron-Einträge und geplante Aufgaben durchgehen. Erst danach wird wiederhergestellt oder neu aufgesetzt, und die Inhalte werden übernommen, nicht die Dateien.
Eine Säuberung ohne Ursachenklärung ist sinnlos, und hier gehört eine unbequeme Einschränkung dazu: Auf einer Installation, die jahrelang nicht gepflegt wurde und deren Logs rotiert sind, lässt sich der Einstiegsweg oft nicht mehr bestimmen. Wir sagen das dann, statt eine Vermutung als Befund zu verkaufen. Die Konsequenz ist ein sauberer Neuaufbau auf aktuellem Stand mit übernommenen Inhalten, weil man nur so weiß, was auf dem System liegt — und nicht ein zweiter Reinigungsdurchlauf, nach dem in vier Wochen dieselben Weiterleitungen wieder auftauchen. Sind personenbezogene Daten betroffen, läuft die Meldefrist nach Artikel 33 DSGVO von 72 Stunden; ob eine Meldung nötig ist, beurteilt Ihre Rechtsberatung, nicht wir. Erreichbar sind wir Mo–Fr 9:00–16:00 Uhr, außerhalb dieser Zeiten nur mit vereinbarter Rufbereitschaft.
Wie ein Wartungsvertrag bei uns aussieht
Ein Wartungsvertrag besteht bei Sharpness aus einem festen und einem vereinbarten Teil. Fest sind: Beobachtung der Sicherheitsmeldungen zu Core, Plugins und Theme samt Bewertung, ob Ihre Installation betroffen ist; Updates erst auf Staging, dann live; Backups mit dokumentiertem Rücksicherungstest; Pflege von PHP, Datenbank, TLS und Mailversand; Monitoring; Redaktionssupport; und ein Protokoll der durchgeführten Arbeiten, das man einem Datenschutzbeauftragten oder einer Prüfung vorlegen kann. Vereinbart wird die Reaktionszeit. Dafür gibt es vier Stufen: BASIC mit 24 Stunden, STANDARD mit 8 Stunden, ADVANCED mit 4 Stunden, PREMIUM mit 2 Stunden — jeweils als Monatspauschale netto je Projekt. Die Pauschale nennen wir im Angebot, nicht auf einer Website, weil sie am Umfang der Installation hängt. Ohne Vereinbarung gilt unsere Grundzusage: Bearbeitung in Eingangsreihenfolge innerhalb von 48 Stunden zu den Geschäftszeiten Mo–Fr 9:00–16:00 Uhr.
Nicht in der laufenden Wartung enthalten sind Vorhaben, die ein eigenes Angebot brauchen. Dazu gehört das Aufholen einer Installation, die über Jahre nicht angefasst wurde: Das ist kein Update-Fenster, sondern ein Projekt mit Bestandsaufnahme, Plugin-Ersatz und Testdurchläufen — nachzulesen auf unserer Seite zu WordPress-Updates. Ebenso Redesigns, neue Funktionen und die Entwicklung eigener Plugins und Gutenberg-Blöcke. Reguläre Versionssprünge auf einem gepflegten System, etwa von 7.0 auf 7.1, gehören dagegen zur Wartung. Diese Abgrenzung klingt nach weniger Leistung als bei Anbietern, die alles einschließen. Sie ist ehrlicher: Wer einen Pauschalpreis für unbekannten Nachholbedarf nennt, kalkuliert einen Aufschlag ein, den Sie in jedem Monat mitbezahlen.
Betrieben wird auf eigenen Servern in Deutschland — Proxmox-Cluster, Serverstandort Deutschland — oder auf Ihrem bisherigen Hosting. Beides geht. Auf fremder Infrastruktur brauchen wir SSH-Zugang, einen brauchbaren Deployment-Weg, eine Staging-Umgebung oder die Möglichkeit, eine anzulegen, und Zugriff auf die Backups. Fehlt das, wird jedes Update-Fenster teurer als der Umzug, und wir sagen das vorher. Wir richten die Betreuung so ein, dass Sie sie beenden können: Zugänge und Lizenzen auf Ihr Unternehmen, Domains auf Ihren Namen, Theme-Code in Ihrem Repository, Installation dokumentiert. Und wenn ein Wartungsvertrag sich für Sie nicht rechnet — eine kleine Unternehmenswebsite mit vier Standard-Plugins auf ordentlichem Hosting, die Sie selbst monatlich durchklicken —, sagen wir das auch. Ein Vertrag, der nur Beruhigung verkauft, hält nicht lange.