Was macht FSWP Maintainer?
Grundlegend (immer angewendet): fswp-developer/references/lean-coding.md (weniger schreiben, zuerst wiederverwenden), fswp-developer/references/coding-standards.md (Codierungsstandards, Dokumentation, i18n, Barrierefreiheit) und fswp-security-engineer (Eingabe, Ausgabe, Autorisierung).
Der vorhandene Code ist die Spezifikation. Führt einen genehmigten Änderungsauftrag von fswp-architect aus (der bereits detect_wp_project.py ausgeführt hat). Folge den eigenen Konventionen des Projekts, es sei denn, sie sind unsicher; Vorlagen des Hauses sind für neue Projekte, nicht für die Umschreibung des Stils eines anderen.
Modus A: Aktualisieren eines bestehenden Plugins oder Themes
- Zuerst lesen. Lies die Dateien, die von der Änderung betroffen sind, deren Aufrufer und deren Tests. Notiere das Präfix, die Benennung, den Fehlerbehandlungsstil und wie Einstellungen und Daten gespeichert werden.
- Reproduzieren. Schreibe bei einem Fehler die Schritte und das beobachtete Ergebnis auf; bestätige den Fehler, bevor du etwas änderst. Gib bei einer Funktion die Akzeptanzprüfung an.
- Kleinste Änderung, die funktioniert. Behebe die Ursache im gemeinsamen Code, nicht an einer einzigen Aufrufstelle. Formatiere nicht berührten Code nicht um; laute Diffs verstecken echte Änderungen und zerstören die Nachvollziehbarkeit (Blame).
- Schütze die öffentliche Oberfläche. Hook-Namen, Funktions- und Klassennamen, Optionsschlüssel, Meta-Schlüssel, REST-Routen und -Formate, Shortcode-Attribute und Template-Overrides sind Verträge. Um eine davon zu ändern, mache sie zuerst veraltet: Lasse die alte funktionieren, rufe
_deprecated_function()/_deprecated_hook()(oder_deprecated_argument()) auf, dokumentiere den Ersatz und entferne sie frühestens in einer späteren Hauptversion. - Upgrade-Pfad. Wenn sich Daten oder Schema ändern: Erhöhe eine gespeicherte Versionsoption, führe eine Migration beim Laden (nicht nur bei Aktivierung) durch, mache sie idempotent und teste das Upgrade von den Daten der vorherigen Version ohne Reaktivierung.
- Kompatibilität. Respektiere das deklarierte
Requires at leastundRequires PHP; schütze neuere Funktionen mitfunction_exists()/Versionsprüfungen oder erhöhe das Minimum bewusst und teile dies mit. - Sicherheitsprüfung des bearbeiteten Codes (
fswp-security-engineer): Eine Fehlerbehebung darf keinen neuen Einstiegspunkt ohne Autorisierung, Nonce, Bereinigung und Escaping hinzufügen. - Version und Changelog. Fehlerbehebung = Patch, Feature = Minor, Breaking Change = Major. Aktualisiere die Plugin-/Theme-Version, die Konstante, das
readme.txt-Stable-Tag und den Changelog gemeinsam. - Ausliefern als Patch oder Diff für das Repository, in dem der Benutzer arbeitet, oder als ZIP, wenn er Dateien bereitstellt. Füge das Paritätsprüflisten-Ergebnis bei.
Themes: Bevorzuge ein Child-Theme oder theme.json/Stilvariations-Änderungen gegenüber der Bearbeitung eines übergeordneten Themes, das Updates erhält. Direkte Bearbeitungen eines übergeordneten Themes und Bearbeitungen von Drittanbieter-Plugin-Dateien gehen beim nächsten Update verloren.
Modus B: Add-on für ein Produkt, das nicht dir gehört
Ein Add-on ist ein separates Plugin (oder eine kleine Theme-Ebene), das einen Host erweitert. Strukturiere es mit fswp-plugin-developer (Schritte 1–3 und 8) und wende dann diese Regeln an:
- Erweitere über die öffentliche API des Hosts. Verwende dokumentierte Actions, Filter, Registrierungen und REST-Routen. Bearbeite niemals Host-Dateien und vermeide den Aufruf von als privat oder undokumentiert markierten Interna; wenn du es musst, isoliere den Aufruf in einer einzigen Adapterklasse und schütze ihn.
- Deklariere die Abhängigkeit. Füge
Requires Plugins: host-slugzum Header hinzu, wenn der Host im WordPress.org-Verzeichnis ist (WordPress 6.5 und höher erzwingt dies). Erkenne es auch zur Laufzeit: Prüfe auf eine Klasse, Funktion oder Konstante oder eine Versionskonstante, nicht auf den Plugin-Dateipfad. - Lade zur richtigen Zeit. Initialisiere bei
plugins_loaded(oder dem eigenen Ready-Hook des Hosts), nachdem du bestätigt hast, dass der Host existiert; registriere bei den Registrierungs-Hooks des Hosts, nicht früher. - Scheitere ruhig und klar. Host fehlt oder zu alt: Tue nichts weiter, zeige einen einzigen Admin-Hinweis, der erklärt, was benötigt wird, und verursache niemals einen fatalen Fehler.
- Versionsbereich. Gib die unterstützten Host-Versionen in der Readme und im Plan an. Teste die niedrigste und die neueste unterstützte.
- Kompatibilitätsdeklarationen. Einige Hosts verlangen, dass du die Funktionsunterstützung deklarierst. Beispiel: WooCommerce erwartet, dass Erweiterungen die Kompatibilität mit High-Performance Order Storage und dem blockbasierten Warenkorb und Checkout deklarieren. Lese die aktuellen Deklarationsaufrufe in den Entwicklerdokumenten des Hosts.
- Dateneigentum. Speichere deine Daten unter deinem eigenen Präfix; schreibe nicht in die Tabellen oder Optionen des Hosts. Die Deinstallation entfernt nur deine Daten.
- Lizenzierung und Benennung. Folge den Marken- und Markenrechtsregeln des Hosts für Namen; verwende einen beschreibenden Stil „für X“, anstatt zu implizieren, dass es offiziell ist.
Verifizieren
Übergib an fswp-qa-engineer mit der Paritätsliste des Änderungsauftrags und der Kompatibilitätstabelle als Szenarioquelle. references/safe-change-checklist.md ist die schnelle Checkliste vor der Auslieferung.