Michael Kanda Logo

KI-generierte WordPress-Themes: Das Problem ist nicht der Code, sondern dass niemand zuständig ist

Das Wichtigste in Kürze

Das Wichtigste in Kürze:

  • Fünf Minuten Magie, zwei Jahre Ärger: Ein komplett per Prompt erzeugtes Theme sieht im Browser super aus - technisch ist es ein statischer Snapshot ohne Update-Pfad.
  • Der Update-Button fehlt: KI-Themes sind für die Update-Prüfung unsichtbar. Beim nächsten PHP-Sprung ist niemand da, der die Deprecated-Fehler wegräumt.
  • Zwei Probleme, nicht eins: Der fehlende Wartungspfad ist ein Custom-Code-Problem und braucht Architektur. Die Fehlerdichte im Code ist ein KI-Problem und braucht Tooling.
  • Betrifft nicht nur KI: Jedes handgebaute Agentur-Theme ohne schriftlich geregelte Wartung hat exakt dasselbe Vakuum. KI erzeugt das Problem nicht - sie vervielfacht es.
  • Der saubere Weg: Gewartetes Basis-Theme als Fundament, KI nur für isolierte Snippets im Child-Theme oder Funktions-Plugin, jedes Snippet durch den Linter. Co-Pilot statt Architekt.
100% KI-generiert Snapshot
Layout + Logik (KI)?
Templates (KI)?
↓ PHP 8.4 / Core-Update
Deprecated / Fatal Error
Kein Update-Pfad · manueller Rebuild
Basis-Theme + Snippets gewartet
Basis-Theme (Core)
Child-Theme / Plugin (KI)
↓ PHP 8.4 / Core-Update
Fundament aktualisiert sich
Ein Klick · Snippets laufen weiter

Einleitung

Promptest du noch oder entwickelst du schon? Die neue Generation an KI-Coding-Assistenten macht es verlockend einfach: Du beschreibst in zwei Sätzen, was du willst, und fünf Minuten später steht ein komplettes WordPress-Theme im Browser. Es sieht schick aus, es fühlt sich magisch an - und technisch ist es oft ein Anti-Pattern mit kaskadierenden Folgefehlern. Das Problem sind nicht die Funktionen von heute. Das Problem sind die Updates von morgen - besonders, wenn WordPress selbst mit KI-Funktionen im Core in eine neue Phase geht.

Was gerade als Vibe Coding durch die Entwickler-Szene geistert - also Software rein über natürliche Sprache zusammenprompten, ohne selbst eine Zeile zu verstehen - erzeugt in Rekordzeit Ergebnisse, die im ersten Moment beeindrucken. Doch wer für Kunden ein reines KI-Theme baut, liefert ein Produkt mit eingebauter technischer Schuld. Eine Wegwerf-Architektur. Und die Rechnung dafür kommt garantiert - nur eben erst dann, wenn der Hoster die alte PHP-Version abschaltet.

Als Geschäftsführer oder Agentur willst du eine Seite, die auch in zwei Jahren noch läuft, ohne dass alles in sich zusammenfällt. In diesem Artikel zeige ich dir mit harten Zahlen, warum reine KI-Themes gefährlich sind - und wie der Ansatz aussieht, mit dem Profis die Geschwindigkeit der KI nutzen, ohne ihre Haftung aufs Spiel zu setzen. Kleiner Spoiler: Diesen Artikel habe ich selbst faktengecheckt - inklusive der Stellen, an denen die Zahlen weniger eindeutig sind, als sie in den meisten Beiträgen zum Thema klingen. Wo ich extrapoliere, schreibe ich dazu, dass ich extrapoliere.

Das Phänomen: Schnell gebaut heißt nicht solide gebaut

Übersicht:

Ein normales Theme aus einem seriösen Repository hat ein Entwickler-Team im Rücken, das es an neue PHP- und WordPress-Versionen anpasst. Ein KI-Theme hat das nicht. Es ist der Zustand von genau dem Tag, an dem der Prompt lief - eingefroren, ohne Wartung, ohne Zukunft.

Der Trugschluss liegt im ersten Eindruck. Die KI ist darauf optimiert, das Problem jetzt sofort visuell zu lösen. Sie liefert Code, der genau das tut, was er im Moment soll. Aber vorausschauende Architektur, saubere Nutzung offizieller WordPress-APIs, standardisierte Hooks, sauberes Input-Handling - all das steht nicht im Prompt und wird deshalb gern übergangen. Das macht den Code extrem zerbrechlich, sobald sich das Fundament unter ihm bewegt. Für KI-Suche zählt außerdem nicht nur Code, sondern auch semantisches Markup.

Die harten Zahlen: Was die Studien wirklich sagen

Datenlage 2025/2026:

Drei große, unabhängige Analysen zeichnen ein deutliches Bild - eine zur Sicherheit, eine zur Wartbarkeit, eine speziell zum WordPress-Ökosystem. Alle drei zeigen in dieselbe Richtung: Tempo ja, aber auf Kosten der Substanz.

Fangen wir bei der Sicherheit an. Der Veracode 2025 GenAI Code Security Report hat 80 kuratierte Coding-Aufgaben durch über 100 Sprachmodelle geschickt. Das Ergebnis ist ernüchternd: In 45% der Aufgaben wählte das Modell die unsichere Variante. Wichtig für die korrekte Einordnung - das heißt nicht "jedes zweite Snippet hat ein Loch", sondern: Wenn das Modell zwischen sicherer und unsicherer Lösung wählen konnte, entschied es sich in fast der Hälfte der Fälle falsch.

Noch unangenehmer wird es bei Cross-Site-Scripting. Bei den XSS-anfälligen Aufgaben (CWE-80) scheiterten die Modelle in 86% der Fälle - nur rund jede siebte Lösung war sauber. Also genau die Lücke, über die ein ungefiltertes Kontaktformular zum Einfallstor wird.

Sicherheit ist kein Zufallsprodukt
Modelle lernen aus Milliarden Zeilen offenem Code - und ein großer Teil davon ist selbst nicht sicher. Ohne explizite Sicherheitsvorgaben im Prompt überlässt du die Entscheidung dem Modell. Und das entscheidet sich in fast der Hälfte der Fälle falsch.
Wartbarkeit im Sinkflug
Die GitClear-Studie hat 211 Millionen geänderte Codezeilen zwischen 2020 und 2024 untersucht. Der Anteil refaktorierter, wiederverwendeter Zeilen fiel von 24,1% (2020) auf 9,5% (2024). 2024 war das erste Jahr überhaupt, in dem mehr kopiert als konsolidiert wurde - und die Zahl duplizierter Code-Blöcke hat sich in diesem Jahr verachtfacht. Und die Kurve ist seitdem nicht abgeflacht: In der Fortschreibung derselben Datenreihe liegt der Anteil refaktorierter Zeilen 2026 bei 3,8%, Copy/Paste bei 15,7%. Aus dem Gleichstand von 2024 ist ein Verhältnis von rund 5:1 zugunsten der Duplikation geworden.
Korrelation, kein Beweis
Fairerweise: GitClear vergleicht keine KI- gegen Nicht-KI-Commits, sondern misst eine Zeitreihe. Die Kurve fällt parallel zur Verbreitung der Assistenten - ein starkes Indiz, aber kein Kausalnachweis, und GitClear formuliert es selbst vorsichtig. Dazu kommt: Die Daten stammen aus Enterprise- und großen Open-Source-Repos, nicht aus dem WordPress-Themebau. Nimm die Zahl als Richtungssignal, nicht als Messwert für deinen Stack.
Der Mechanismus ist trotzdem plausibel
Ein Assistent macht das Einfügen eines neuen Blocks billiger als das Konsolidieren eines bestehenden. Wo Kopieren einen Tastendruck kostet und Refactoring zehn Minuten Nachdenken, verschiebt sich das Verhältnis von allein. Und jeder duplizierte Block ist eine Stelle mehr, die du bei einem zukünftigen Fix von Hand nachziehen musst.

Kurz gesagt: Der Output ist schnell, aber die Schulden wachsen mit. Und bei einer Kundenseite erbst am Ende du - oder dein Kunde - die Aufräumarbeit.

Und die WordPress-eigene Datenlage

Beide Studien oben haben denselben Schwachpunkt: Sie sind nicht WordPress. Die dritte schon. Patchstack nennt das Phänomen im State of WordPress Security in 2026 beim Namen: Vibe Coding - also LLM-generierter Plugin-Code, den der Ausliefernde selbst nicht auditieren kann - wird dort als direkter Treiber der Schwachstellen-Zunahme geführt. Die Zahlen dazu: 11.334 neue Schwachstellen im Ökosystem 2025, ein Plus von 42% gegenüber dem Vorjahr, wobei die hoch ausnutzbaren Lücken um 113% zulegten. Der gewichtete Median von der Veröffentlichung bis zur ersten Massenausnutzung: fünf Stunden. Und 46% der 2025 offengelegten Lücken hatten zum Zeitpunkt der Veröffentlichung überhaupt keinen Patch.

Wie die Laborquote von 45% in einem realen Projekt aussehen kann, zeigt ein Bericht aus der Agenturpraxis: In einem einzigen vibe-codeten Plugin fanden sich 100 verschiedene Sicherheitsprobleme. Eine Anekdote, kein Sample - aber eine, die man einmal gelesen haben sollte, bevor man ungeprüften Code an einen Kunden übergibt.

Das Update-Vakuum: Der Snapshot, der niemanden hat

Ein reines KI-Theme ist ein Foto von einem einzigen Moment. Es bekommt keine Updates, weil niemand welche baut. Sobald dein Hoster eine alte PHP-Version abschaltet und veraltete Funktionen wegfallen, fliegen dem Kunden entweder Deprecated-Warnungen oder gleich Fatal Errors um die Ohren. Und dann ist da niemand mit einem "Update"-Button, der das behebt.

Zeitstrahl: Ein reines KI-Theme scheitert beim PHP- oder WordPress-Core-Update, während ein gewarteter Hybrid-Ansatz weiterläuft.
Der erste Render täuscht: Der Unterschied zwischen KI-Snapshot und wartbarem System zeigt sich erst beim nächsten PHP- oder WordPress-Update.

"Kein Update" ist dabei noch der harmlose Fall. WordPress fragt für jedes installierte Theme den wordpress.org-Endpoint ab - und zwar anhand des Ordner-Slugs. Nennt deine KI das Theme portfolio, business oder blog, und existiert im offiziellen Verzeichnis ein Theme mit demselben Slug in höherer Versionsnummer, dann ist dein Custom-Theme genau einen Auto-Update-Lauf davon entfernt, durch ein völlig fremdes Theme überschrieben zu werden.

Das ist keine theoretische Sorge: WordPress hat in Version 6.1 den Theme-Header Update URI eingeführt - mit der ausdrücklichen Begründung, dass Drittanbieter-Themes nicht mehr versehentlich vom gleichnamigen Theme aus dem offiziellen Verzeichnis überschrieben werden sollen. Der Mechanismus existiert also, weil das Problem existiert.

Und die faire Einordnung:

Ein eigener Update-Pfad ist technisch machbar - und die Absicherung dagegen ist eine Zeile. Beides läuft über denselben Header in der style.css:

  • Minimalschutz: Update URI: false setzen. WordPress ignoriert das Theme dann bei der Update-Prüfung vollständig - keine Kollision mehr möglich. Eine Zeile, kein Aufwand, und der wichtigste Handgriff bei jedem Custom-Theme.
  • Echter Update-Pfad: Update URI: https://deine-domain.at/mein-theme/ setzen und den Filter update_themes_deine-domain.at bedienen (beides seit WordPress 6.1). Damit hängt dein Custom-Theme an einem eigenen Update-Server und bekommt reguläre Update-Hinweise im Dashboard.

Das Problem ist also nicht "unmöglich", sondern "macht praktisch niemand, der ein Theme in fünf Minuten geprompted hat". Der Filter setzt den Header voraus - ohne Update URI greift er nicht.

Um es noch fairer zu sagen: Ein KI-Theme explodiert nicht automatisch beim Sprung auf PHP 8.4. Ob es bricht, hängt davon ab, wie sauber der Code ist. Und das Update-Vakuum ist streng genommen gar kein KI-spezifisches Problem - ein handgeschriebenes Agentur-Theme hat exakt dasselbe. Was fehlt, ist in beiden Fällen dasselbe: ein Wartungspfad. Niemand ist zuständig. Und "niemand ist zuständig" ist bei einer geschäftskritischen Website die gefährlichste aller Ausgangslagen. Spätestens bei sicherheitskritischen Updates wird das relevant, wie die 24-Stunden-Sperre für Plugins und Themes zeigt.

Das ist nicht nur meine Sicht. Patchstack schreibt im selben Report, die Angriffsfläche einer WordPress-Website werde künftig deutlich größer sein als Core, Plugins und Themes zusammen - und man brauche Sichtbarkeit auch in custom-codeten Code und in die verwendeten JavaScript- und PHP-Pakete. Genau dort liegt der blinde Fleck: Individuell erzeugter Code landet in keiner CVE-Datenbank. Bei einem verwundbaren Marktplatz-Plugin erfährst du es irgendwann. Bei einem vibe-codeten Custom-Theme nie.

Aus meinem Arbeitsalltag: Das Theme ohne Zuständigen ist der Normalfall

Wenn ich hier von einem Wartungsvakuum schreibe, ist das kein Gedankenspiel für die Zukunft. Es ist der Zustand, in dem ich Projekte regelmäßig übernehme - und in den seltensten Fällen hat eine KI dieses Theme gebaut. Meistens war es eine Agentur, vor Jahren, sauber gemeint und handgeschrieben.

Das Muster wiederholt sich so verlässlich, dass ich es mittlerweile schon am ersten Telefonat erkenne. Die Seite kommt nie zu mir, weil jemand vorausschauend über Wartbarkeit nachdenkt. Sie kommt, weil etwas bereits kaputt ist: Der Hoster hat die PHP-Abschaltung angekündigt, oder es ist nach einem Update schlicht nichts mehr da außer einer weißen Seite. Erst dann stellt sich die Frage, wer eigentlich zuständig ist - und die Antwort lautet regelmäßig: niemand. Die Agentur gibt es nicht mehr, oder es gibt sie noch, aber den Entwickler nicht, der das Theme gebaut hat. Der Vertrag lief aus, ohne dass jemand die Wartung nachgeschärft hätte.

Was ich dann vorfinde, ist meist dasselbe Bild. Kein Repository, kein Changelog, keine Dokumentation - die einzige existierende Fassung des Themes liegt auf dem Produktivserver. Eine functions.php, die über Jahre gewachsen ist, mit Snippets aus verschiedenen Quellen, ohne Kommentare, ohne erkennbare Herkunft. Und ein Dashboard, das behauptet, alles sei auf dem neuesten Stand.

Der unangenehmste Teil ist selten technisch. Es ist das Gespräch, in dem ich erklären muss, dass "maßgeschneidert" in diesem Fall eben auch "ungewartet" bedeutet hat - und dass das dem Kunden nie jemand gesagt hat, weil es beim Kauf niemand ausgesprochen hat. Niemand hat böswillig gehandelt. Es hat nur nie jemand die Zuständigkeit aufgeschrieben.

Bevor ich überhaupt reparieren kann, muss ich erst verstehen, was das Theme eigentlich alles tut. Welche Funktion hängt an welchem Hook, was passiert, wenn ich sie entferne, welcher Teil ist Deko und welcher trägt tragende Funktionalität. Das ist keine Reparatur, das ist Archäologie - und sie kostet ein Vielfaches dessen, was ein sauber gekapseltes Setup an laufender Wartung gekostet hätte.

Genau deshalb halte ich die KI-Diskussion an dieser Stelle für zu eng geführt. Das Vakuum ist älter als jeder Coding-Assistent. Was sich mit KI ändert, ist die Geschwindigkeit und die Menge: Es entstehen mehr solcher Themes, sie entstehen schneller, und sie entstehen zunehmend bei Leuten, die den Code nicht lesen können, den sie ausliefern. Das Problem ist nicht neu. Es skaliert nur gerade.

Das Kundenrisiko: Von der Black Box zur Haftungsfalle

Kunden sind es gewohnt, im Dashboard auf "Aktualisieren" zu klicken. Fällt das weg, entsteht ein Produkt, das sich für sie wie eine Black Box anfühlt - und für dich als Dienstleister wie ein offenes Haftungsrisiko.

Falsch Richtig
Ein komplett generiertes Theme ohne Update-Schnittstelle übergeben und auf das Beste hoffen Ein gewartetes Basis-Theme als Fundament nutzen, das sich per Klick aktualisiert
Ungeprüften KI-Code direkt ins Haupt-Theme kippen, weil er im Browser ja funktioniert Jedes KI-Snippet isoliert kapseln und vor der Übergabe auf Sicherheit prüfen (Human-in-the-Loop)
Custom-Theme verkaufen und die laufende Wartung stillschweigend voraussetzen Maßgeschneiderte Lösungen nur gekoppelt an einen klaren Wartungsvertrag anbieten

Der wunde Punkt ist die Betriebssicherheit. Bricht die Seite nach einem PHP-Sicherheitsupdate zusammen, ist der Ärger vorprogrammiert - und wer dann zuständig ist, entscheidet nicht dein Gefühl, sondern dein Vertrag. Genau deshalb ist die Wartungsvereinbarung kein Zusatzverkauf, sondern der Teil, der die Verantwortung überhaupt erst zuordnet.

Und wenn durch eine unentdeckte Lücke ein echter Schaden entsteht - etwa Datenabfluss über ein ungefiltertes Formular - dann ist das kein Schönheitsfehler mehr, sondern ein Fall fürs Kleingedruckte. KI prüft weder DSGVO-Konformität noch validiert sie Eingaben zuverlässig; die technische Umsetzung bleibt an dir hängen.

Die saubere Lösung: KI als Co-Pilot, nicht als Architekt

Der Hybrid-Ansatz:

Nimm ein schlankes, professionell gewartetes Basis-Theme als Fundament. Lass die KI ausschließlich isolierte Funktionen schreiben - untergebracht in einem Child-Theme oder einem eigenen Funktions-Plugin. Das Fundament aktualisiert sich weiter per Klick, deine Snippets bleiben sauber gekapselt.

Dieser Ansatz löst das Update-Dilemma komplett, weil er zwei Dinge strikt trennt: das Fundament, das jemand anderes pflegt, und deine Erweiterungen, für die nur du zuständig bist. Vier Regeln haben sich dabei in der Praxis durchgesetzt:

Regel 1: Fass das Haupt-Theme niemals an

Verändere keine einzige Zeile im originalen Theme-Ordner. Sobald du das tust, ist die Update-Fähigkeit tot. Dein Code lebt an genau zwei erlaubten Orten:

  • Visuelles und Templates: in einem klassischen Child-Theme.
  • Logik und Funktionen: in einem eigenen Funktions-Plugin. Der Charme dabei: Diese Logik bleibt sogar dann aktiv, wenn du irgendwann das Theme komplett wechselst.

Bei Block-Themes gilt das sinngemäß, aber anders verteilt. Visuelle Anpassungen gehören dort nicht ins Child-Theme, sondern in theme.json-Overrides beziehungsweise eine Theme-Variation - Child-Themes sind unter Full-Site-Editing nicht mehr der klare Default. Die Logik-Ebene bleibt unverändert: eigenes Funktions-Plugin. Das Prinzip ist in beiden Welten dasselbe - das Fundament bleibt unberührt, deine Erweiterung liegt an einem Ort, den ein Update nicht anfasst.

Regel 2: Setz der KI Leitplanken

Der häufigste Fehler ist, nach allgemeinem WordPress-Code zu fragen. Zwing die KI stattdessen in die saubere Architektur. Statt "Schreib mir ein Theme für ein Portfolio" formulierst du präzise:

  • Nenn den konkreten Hook, in den sich der Code einklinken soll.
  • Gib die Ziel-PHP-Version vor (z.B. "muss PHP 8.2+ kompatibel sein").
  • Fordere striktes Input-Sanitizing explizit ein - die KI macht es sonst nicht von allein.

Regel 3: Tag jedes Snippet

Gib jedem generierten Block einen standardisierten Kommentar-Header. Das rettet dich in zwei Jahren, wenn PHP 9.0 ansteht: Du durchsuchst die Datei einfach nach dem Marker und lässt genau diese Blöcke auf Kompatibilität prüfen - während das Haupt-Theme unangetastet bleibt.

Regel 4: Lass eine Maschine gegenlesen, bevor du liest

Gegen "45% unsicher" hilft keine Architektur, sondern ein Linter. Drei Werkzeuge, alle kostenlos, alle in unter einer Stunde eingerichtet:

  • PHP_CodeSniffer mit den WordPress Coding Standards (phpcs --standard=WordPress). Meldet fehlendes Escaping, fehlende Nonces und nicht-preparierte Queries - genau die drei Klassen, bei denen KI-Code am zuverlässigsten versagt.
  • PHPCompatibilityWP. Prüft deinen Code gegen eine Ziel-PHP-Version. Aus "ich fürchte, es bricht bei PHP 8.4" wird damit ein Report mit Zeilennummern. Das ist der Unterschied zwischen einer Sorge und einem Ticket.
  • Plugin Check (plugin-check). Fährt dein Funktions-Plugin gegen die offiziellen Anforderungen des Verzeichnisses - auch wenn du es nie veröffentlichst.

Kein Snippet geht ohne diese drei Durchläufe in ein Kundenprojekt. Das kostet zwei Minuten pro Snippet und ersetzt keinen Menschen - aber es fängt die mechanischen Fehler ab, bevor der Mensch überhaupt hinschaut.

Der Unterschied im Code: Was die KI liefert vs. was du übergibst

Das gängigste Negativbeispiel für KI-Code ist eine ungefilterte Ausgabe aus $_GET. Nur: Das ist Lehrbuch-XSS von 2010 und kein Muster, das ein aktuelles Modell noch produziert. Der realistische Failure-Mode sieht harmloser aus und ist gefährlicher - er tut nämlich genau das, was du bestellt hast.

Beide folgenden Snippets liefern die Beiträge eines Autors über einen REST-Endpoint. Im Browser ist das Ergebnis identisch. Beispiel 1 ist ein offenes Scheunentor, Beispiel 2 nicht.

So nicht: KI-Output auf "Baue mir einen Endpoint fuer die Beitraege eines Autors"
add_action( 'rest_api_init', function () {
    register_rest_route( 'meintheme/v1', '/autor-posts', [
        'methods'             => 'GET',
        'callback'            => 'autor_posts',
        'permission_callback' => '__return_true', // "sonst kommt 401"
    ] );
} );

function autor_posts( $request ) {
    global $wpdb;
    $id = $request->get_param( 'id' );
    return $wpdb->get_results(       // Parameter direkt in die Query
        "SELECT ID, post_title, post_status FROM {$wpdb->posts}
         WHERE post_author = {$id}"
    );
}

Drei Fehler in zwölf Zeilen, und keiner davon sieht im Browser nach einem Fehler aus:

permission_callback => '__return_true'
Nicht als Entscheidung gesetzt, sondern als Reflex gegen die 401-Meldung. Damit ist der Endpoint für jeden im Internet erreichbar - und alles, was dahinter passiert, ist die einzige verbliebene Schutzschicht. Wie wenig darauf Verlass ist, hat wp2shell im Juli 2026 gezeigt: Dort war die Berechtigungsprüfung im Core zwar vorhanden, wurde aber über eine Route-Confusion im Batch-Endpoint umgangen. Wer sie gleich ganz weglässt, braucht dafür keine Lücke. Mehr dazu in der Bedrohungslage 2026.
Parameter direkt in die SQL-Query interpoliert
SQL-Injection über einen öffentlich erreichbaren Endpoint. Kein Login nötig, kein gültiger Benutzername nötig.
Kein post_status-Filter
Der Endpoint gibt Entwürfe, private und passwortgeschützte Beiträge mit aus. Kein "Hack", einfach nur stiller Datenabfluss - und im Test fällt es nicht auf, weil der Endpoint ja tut, was er soll: Er liefert Beiträge.
So schon: validiert am Schema, gekapselt im Funktions-Plugin, getaggt
/**
 * @generiert_mit KI-Assistent - 2026-07-17, manuell geprüft
 * @zweck        REST-Endpoint: veröffentlichte Beiträge eines Autors
 * @ablageort    Funktions-Plugin
 */
add_action( 'rest_api_init', function () {
    register_rest_route( 'da/v1', '/autor-posts', [
        'methods'  => WP_REST_Server::READABLE,
        'callback' => 'da_autor_posts',
        // Bewusst öffentlich: liefert ausschließlich publizierte Daten.
        'permission_callback' => '__return_true',
        'args' => [
            'id' => [
                'required'          => true,
                'sanitize_callback' => 'absint',
                'validate_callback' => static function ( $v ) {
                    return (bool) get_user_by( 'id', absint( $v ) );
                },
            ],
        ],
    ] );
} );

function da_autor_posts( WP_REST_Request $request ) {
    $posts = get_posts( [
        'author'         => $request->get_param( 'id' ),
        'post_status'    => 'publish',
        'posts_per_page' => 20,
    ] );

    return array_map( static function ( $p ) {
        return [
            'id'    => $p->ID,
            'title' => get_the_title( $p ),
            'link'  => get_permalink( $p ),
        ];
    }, $posts );
}
Der Punkt ist nicht "nie __return_true"
Öffentliche Endpoints sind völlig legitim. Der Punkt ist, dass es eine dokumentierte Entscheidung sein muss - und dass die Daten dahinter dann auch wirklich öffentlich sind. Der Kommentar darüber ist kein Deko-Element, er ist der Beleg, dass jemand nachgedacht hat.
Keine eigene Query, keine Injection
get_posts() mit post_status => 'publish' löst dasselbe Problem, ohne dass du Escaping selbst richtig machen musst. Die sichere Variante ist hier auch die kürzere.
Validierung am Schema, nicht im Handler
sanitize_callback und validate_callback fangen den Parameter ab, bevor deine Logik ihn je zu sehen bekommt. Das ist die WordPress-eigene Lösung - die KI kennt sie, schlägt sie aber ungefragt selten vor.
Wartbar durch Tagging
Der standardisierte Header macht das Snippet bei einem späteren PHP-Audit in Sekunden auffindbar. Suchen, prüfen, weiter.

Und das Gegenstück: sauber gekapselt statt ins Haupt-Theme gekippt

Der zweite Teil des Arguments ist keine Sicherheits-, sondern eine Wartbarkeitsfrage. Dieselbe Autoren-Box, aber am richtigen Ort und mit klaren Bedingungen:

Child-Theme statt Haupt-Theme, sauber escaped, klar begrenzt
/**
 * @generiert_mit KI-Assistent - 2026-07-17, manuell geprüft
 * @zweck        Autoren-Box unter Single-Posts
 * @ablageort    Child-Theme / functions.php
 */
function da_autoren_box( $content ) {
    // Nur im Beitrag, nur im Main-Loop - kein Content-Spam
    if ( ! is_singular( 'post' ) || ! in_the_loop() || ! is_main_query() ) {
        return $content;
    }
    $autor = get_the_author_meta( 'display_name' );
    $bio   = get_the_author_meta( 'description' );

    $box  = '<aside class="autor-box">';
    $box .= '<strong>' . esc_html( $autor ) . '</strong>';
    $box .= '<p>' . wp_kses_post( $bio ) . '</p>';
    $box .= '</aside>';

    return $content . $box;
}
add_filter( 'the_content', 'da_autoren_box' );
Update-sicher
Weil diese Funktion im Child-Theme oder Plugin liegt, kann das Fundament jeden Monat aktualisiert werden. Die Autoren-Box bleibt unberührt.
Kontextgerecht escaped
esc_html() für den Namen, wp_kses_post() für die Biografie. Escaping ist in WordPress kontextabhängig - für Attribute gilt esc_attr(), für URLs esc_url(). Ein pauschales "escape halt irgendwas" reicht nicht.
Kein Content-Spam
Dank is_singular() und in_the_loop() weiß der Code exakt, wann er feuern darf - und taucht nicht versehentlich auf Archivseiten oder in Suchergebnissen auf.

Reines KI-Theme vs. Hybrid: Die Gegenüberstellung

Reines KI-Theme Hybrid-Ansatz
Updates: Kein Pfad - kein Update-Eintrag, im schlimmsten Fall Slug-Kollision mit einem fremden Theme Updates: Sicher - das Fundament aktualisiert sich per Klick, die Snippets bleiben stabil
Wartung: Extrem hoch - du debuggst im Ernstfall den gesamten Code selbst Wartung: Minimal - du debuggst nur das eine isolierte Snippet
Übergabe: Riskant - erfordert eigene Update-Pipelines oder blockiert das Dashboard Übergabe: Nahtlos - der Kunde merkt keinen Unterschied zu einer klassischen Premium-Seite
Zuständigkeit: Vollständig bei dir - für Architektur, Sicherheit und Zukunftsfähigkeit Zuständigkeit: Klar aufgeteilt - das Fundament pflegt ein fremdes Team, du verantwortest dein Snippet

Kein Einzelfall: Was die Community gerade diskutiert

Das Thema kocht nicht nur in Nischen-Foren hoch. Im offiziellen Core-Umfeld wird seit dem Beitrag "AI as a WordPress Fundamental" heftig darüber gestritten, wie tief KI ins System darf. Der Kommentarverlauf darunter ist lesenswert - allerdings dreht er sich um etwas anderes, als man aus der Ferne vermuten würde.

Die mit Abstand häufigste Forderung ist eine simple: ein vollständiger Aus-Schalter. Mehrere Entwickler und Agenturbetreiber verlangen, KI müsse per Default deaktiviert und auf Codeebene abschaltbar sein - teils aus ethischen Gründen, teils weil ihre Kunden aus Compliance-Gründen gar keine KI-Verarbeitung zulassen dürfen. Der Begriff AI Slop fällt dabei mehrfach. Gemeint ist damit allerdings minderwertiger generierter Inhalt, nicht generierter Code.

Projektseitig wird darauf durchaus eingegangen. Der Autor des Beitrags verweist auf eine offene Diskussion im Repository zu Kontroll- und Abschaltmechanismen und stellt klar, dass WordPress selbst keine Provider-Integration mitliefert - eine frische Installation nutzt also von sich aus keine KI. Zum Slop-Thema zieht er einen Vergleich, der hier gut passt: KI-Wildwuchs sei wie Datenbank-Ballast, der eine Seite in die Knie zwingt. Jedes System muss bewusst und maßvoll eingesetzt werden.

Was in diesem Thread ausdrücklich nicht diskutiert wird, ist die Frage, die diesen Artikel antreibt: Wer repariert in zwei Jahren die Seiten, die Laien per Prompt zusammengeklickt haben? Die Sorgen dort drehen sich um Kontrolle, Datenschutz, Kosten und Ressourcenverbrauch - nicht um die Wartbarkeit generierter Themes. Das ist keine Schwäche des Arguments, aber es wäre unredlich, es einer fremden Diskussion unterzuschieben. Es ist meine These, nicht die des Core-Teams.

Und weil ich sie als These kennzeichne, hier die Gegenrede gleich mit: Man kann mit gutem Grund argumentieren, dass sich das Problem selbst erledigt. Themes sind laut Patchstack nur für 9 % der Schwachstellen im Ökosystem verantwortlich, die Modelle werden besser, und ein Großteil der schnell geprompteten Seiten wird in zwei Jahren ohnehin nicht mehr existieren. Wer das anders sieht, hat gute Argumente.

Ich halte trotzdem an zwei Stellen dagegen. Erstens ist der Prozentsatz die freundlichste mögliche Darstellung: 9 % von 11.334 sind rund 1.020 Theme-Schwachstellen in einem einzigen Jahr, fast drei pro Tag. Der Anteil ist klein, weil das Plugin-Ökosystem riesig ist - nicht, weil Themes harmlos wären. Zweitens hat Veracode die Annahme "die Modelle werden besser" im Frühjahr 2026 selbst nachgemessen: Die Syntax-Trefferquote stieg seit 2023 von rund 50 % auf 95 %, die Sicherheits-Trefferquote blieb flach zwischen 45 % und 55 % - über alle Modellgenerationen hinweg und unabhängig von der Modellgröße. Die Modelle schreiben besser lauffähigen Code. Sicherer schreiben sie ihn nicht.

Was sich ohnehin nicht wegargumentieren lässt, sind die belegten Zahlen weiter oben - Fehlerdichte und Duplikation - und die Tatsache, dass ein Custom-Theme ohne Update-Pfad niemanden hat, der im Ernstfall zuständig ist.

Häufig gestellte Fragen

Ist es fahrlässig, Kunden ein komplett KI-generiertes WordPress-Theme zu übergeben?

Im professionellen Umfeld ja. Ein reines KI-Theme ist ein statischer Snapshot ohne Update-Infrastruktur. Es bekommt keine Sicherheits- oder Kompatibilitäts-Updates, und niemand pflegt es, wenn der Hoster auf eine neue PHP-Version umstellt. Wer Code ausliefert, den er selbst nicht versteht und nicht warten kann, verschiebt lediglich technische Schulden in die Zukunft des Kunden.

Was passiert mit einem KI-Theme beim nächsten PHP- oder Core-Update?

Ein KI-Theme explodiert nicht automatisch - das eigentliche Problem ist, dass niemand da ist, der es repariert. Nutzt der generierte Code veraltete oder unsaubere Muster, tauchen beim Sprung auf eine neue PHP-Version Deprecated-Warnungen oder Fatal Errors auf. Bei einem gewarteten Basis-Theme übernimmt das Entwickler-Team genau diese Anpassung - bei deinem KI-Snapshot niemand.

Warum gibt es bei einem KI-Theme keinen Update-Button im Dashboard?

Weil niemand eine Update-Quelle dafür betreibt. WordPress gleicht Themes anhand des Ordner-Slugs gegen wordpress.org ab; ein einmalig generiertes Custom-Theme ist dort nicht hinterlegt und taucht deshalb nie als aktualisierbar auf. Heikel wird es bei generischen Slugs wie portfolio oder blog: Existiert im Verzeichnis ein Theme mit demselben Slug und höherer Version, kann dein Custom-Theme sogar überschrieben werden. Genau dagegen hat WordPress 6.1 den Theme-Header Update URI eingeführt: Mit Update URI: false ignoriert WordPress das Theme bei der Update-Prüfung vollständig, mit einer eigenen URI plus dem Filter update_themes_{hostname} lässt sich ein echter Update-Pfad bauen. Beides ist eine Zeile Aufwand - nur macht es bei einem in fünf Minuten geprompteten Theme praktisch niemand.

Wie nutze ich KI sicher für WordPress, ohne die Wartbarkeit zu verlieren?

Setz KI nicht als Architekt, sondern als Co-Pilot ein. Nimm ein schlankes, professionell gewartetes Basis-Theme als Fundament und lass die KI ausschließlich isolierte Funktionen schreiben - untergebracht in einem Child-Theme oder einem eigenen Funktions-Plugin. So aktualisiert sich das Fundament weiter per Klick, während deine maßgeschneiderten Snippets sauber gekapselt bleiben.

Hafte ich als Agentur für Sicherheitslücken im KI-Code?

Das hängt am Vertrag und gehört im Ernstfall zum Anwalt - Gewährleistung, Schadenersatz und Wartungspflicht sind drei verschiedene Dinge, und DSGVO-Verantwortlicher ist grundsätzlich der Auftraggeber, nicht die Agentur. Praktisch gilt aber: Entsteht durch eine ungeprüfte Lücke ein Schaden, diskutieren zwei Parteien darüber, wer das hätte prüfen müssen. Ungeprüfter Code ohne schriftlich geregelte Wartung ist deshalb ein Risiko, das vorher niemand kalkuliert hat.

Betrifft das auch mein handgebautes Agentur-Theme?

Ja, und in der Praxis sogar häufiger. Der fehlende Wartungspfad hängt nicht daran, wer den Code geschrieben hat, sondern daran, ob jemand für ihn zuständig ist. Ein handgebautes Agentur-Theme taucht in der Update-Prüfung genauso wenig auf wie ein geprompteter Snapshot. Wenn die Agentur den Betrieb eingestellt hat, der Entwickler gewechselt ist oder der Vertrag ausgelaufen ist, ohne dass die Wartung schriftlich geregelt wurde, ist das Ergebnis identisch: Beim nächsten PHP-Sprung ist niemand da, der die Deprecated-Fehler wegräumt. Der Test dafür braucht keinen Code-Audit, sondern eine Frage - wer genau zieht mein Theme nach, wenn der Hoster die PHP-Version anhebt, und steht das irgendwo schriftlich?

Ist das überhaupt ein KI-Problem oder ein Custom-Code-Problem?

Beides, aber sauber getrennt. Der fehlende Wartungspfad ist ein Custom-Code-Problem - ein handgeschriebenes Agentur-Theme hat exakt dasselbe Vakuum und wird mit derselben Architektur gelöst. KI-spezifisch sind zwei andere Dinge: die höhere Fehlerdichte im generierten Code und die Duplikation, die spätere Fixes teuer macht. Gegen das erste hilft ein gewartetes Fundament, gegen das zweite ein Linter. Wer beides zusammenwirft, löst am Ende keines von beiden richtig.

Wie prüfe ich KI-generierten WordPress-Code automatisiert?

Mit drei kostenlosen Werkzeugen, die zusammen in unter einer Stunde eingerichtet sind. PHP_CodeSniffer mit den WordPress Coding Standards meldet fehlendes Escaping, fehlende Nonces und nicht-preparierte Datenbankabfragen. PHPCompatibilityWP prüft den Code gegen eine Ziel-PHP-Version und macht aus der Sorge vor PHP 8.4 einen Report mit Zeilennummern. Plugin Check fährt dein Funktions-Plugin gegen die offiziellen Anforderungen des Verzeichnisses. Das ersetzt kein Review, fängt aber die mechanischen Fehler ab, bevor ein Mensch hinsieht.

Wie viel Prozent des KI-Codes enthält wirklich Sicherheitslücken?

Eine Veracode-Analyse aus 2025 über mehr als 100 Sprachmodelle und 80 Aufgaben zeigt: In 45% der Aufgaben wählte das Modell die unsichere Variante. Innerhalb der XSS-anfälligen Aufgaben lag die Fehlerquote bei 86% - das ist eine Quote in dieser einen Klasse, keine Gesamtquote über alle Samples. Wichtig für WordPress: Getestet wurden Java, JavaScript, Python und C#, nicht PHP. Die Übertragung ist plausibel, weil die Muster über alle getesteten Sprachen und Modellgenerationen stabil blieben - aber sie bleibt eine Übertragung. Im Frühjahr 2026 hat Veracode nachgemessen: Die Sicherheits-Trefferquote liegt weiterhin flach zwischen 45% und 55%, während die Syntax-Trefferquote seit 2023 von rund 50% auf 95% gestiegen ist. Neuere Modelle schreiben also besser lauffähigen, aber nicht sichereren Code.

Fazit: KI nimmt dir die Schreibarbeit ab, nicht das Denken

KI-Coding-Tools sind ein brutal schneller Assistent - aber ein miserabler Architekt. Wer die komplette Struktur einer WordPress-Seite an einen Prompt abgibt, baut auf Sand: Der erste PHP-Sprung, das erste Core-Update, der erste Endpoint ohne echten permission_callback, und die Wegwerf-Architektur hat ihre Halbwertszeit überschritten. Und dann steht - je nach Vertrag - der Kunde oder du selbst in der Verantwortung.

Die wichtigsten Punkte auf einen Blick:

  • Snapshot ohne Zukunft: Reine KI-Themes tauchen in der Update-Prüfung nicht auf - und bei generischem Slug kann sie im schlimmsten Fall ein fremdes Theme überschreiben.
  • Belegte Risiken: Laut Veracode wählt die KI in 45% der Aufgaben die unsichere Variante; innerhalb der XSS-anfälligen Aufgaben liegt die Fehlerquote bei 86% - und die Nachmessung im Frühjahr 2026 zeigt, dass neuere Modelle daran nichts ändern. Getestet wurde ohne PHP - die Übertragung auf WordPress ist plausibel, aber eine Übertragung. Parallel bricht laut GitClear die Wartbarkeit ein, und Patchstack führt Vibe Coding als direkten Treiber der 11.334 neuen WordPress-Schwachstellen in 2025.
  • Zwei Probleme, zwei Werkzeuge: Der fehlende Wartungspfad ist ein Custom-Code-Problem und braucht Architektur. Die Fehlerdichte ist ein KI-Problem und braucht Tooling - phpcs, PHPCompatibilityWP, Plugin Check.
  • Nicht nur ein KI-Thema: Das Wartungsvakuum trifft handgebaute Agentur-Themes genauso. Die entscheidende Frage ist nicht, wer den Code geschrieben hat, sondern wer ihn beim nächsten PHP-Sprung nachzieht.
  • Zuständigkeit statt Sicherheitsversprechen: Auch ein gewartetes Basis-Theme ist nicht per se sicher. Was der Hybrid-Ansatz liefert, ist ein Team, das reagiert - und eine klare Grenze, wofür du selbst geradestehst.

Nutz die Geschwindigkeit der KI für maßgeschneiderte Snippets - aber setz sie auf ein unkaputtbares Fundament. Dann bleibt die Seite für den Kunden wartbar und für dich als Entwickler sicher. Wie du dein WordPress darüber hinaus konsequent verschlankst, zeigt der WordPress-Diät-Guide. Und warum das Fundament auch beim Ressourcenverbrauch entscheidet, liest du in der 512-MB-Falle.

Zweite Meinung zu deinem Setup

Läuft auf deiner Website ein Theme, bei dem du dir nicht sicher bist, wie wartbar es wirklich ist? Ich schaue mir den Code an und sage dir ehrlich, ob er die nächsten PHP-Sprünge übersteht - oder ob du auf einer strukturellen Schwachstelle sitzt.