Wiederverwendbares WordPress-Basis-Plugin von Robin Herbeck. Wird als Grundgerüst in jedes neue Kundenprojekt eingebaut und updatet sich automatisch über GitHub Releases.
- Settings-Page mit Tab-Kategorien, Live-Suche und pro-Tab isolierten Option-Groups
- Dashboard-Cleanup ersetzt die WordPress-Default-Widgets durch ein eigenes Widget (Support-Box, Quick-Links, erweiterbare Sections)
- DB-Tools für Export, Import und Restore. Pure PHP, kein
mysqldump, läuft auf Shared Hosting - Sync Network für Peer-to-Peer Sync zwischen WordPress-Instanzen über REST-API und HMAC-SHA256
- Auto-Update über GitHub Releases, eingehängt in die native WP-Update-Mechanik
- WordPress 6.5+
- PHP 8.1+
- Neueste ZIP aus Releases laden
- In WordPress unter Plugins → Installieren → Plugin hochladen
- Aktivieren
- Unter Einstellungen → RH Blueprint konfigurieren
Das Plugin prüft GitHub regelmäßig auf neue Releases (via plugin-update-checker). Updates erscheinen unter Dashboard → Aktualisierungen wie normale Plugin-Updates.
- Version in
rh-blueprint.phpbumpen (* Version: 0.5.0) - Commit und Push auf
main - Tag erstellen und pushen:
git tag v0.5.0 git push origin v0.5.0
- Die Action
release.ymlbaut ZIP und Release automatisch (Tag-Version muss exakt mit dem Plugin-Header übereinstimmen, sonst bricht sie ab) - Aktive Sites sehen das Update innerhalb von 12h (WP-Cron-Default)
composer install # Dependencies
vendor/bin/phpstan analyse # Statische Analyse (Level 5)
cd ../../ && ddev start && ddev launch # Lokales Test-WordPressDas Plugin ist per Symlink in Code/wp/wp-content/plugins/rh-blueprint eingebunden.
rh-blueprint/
├── rh-blueprint.php # Plugin-Header, Autoloader, Bootstrap
├── composer.json # PSR-4 RhBlueprint\ -> inc/
├── vendor/ # Committed (Shared-Hosting-Kompatibilität)
├── inc/
│ ├── Plugin.php # Singleton-Bootstrap
│ ├── helpers.php # Globale Helper
│ ├── UpdateChecker.php # GitHub Auto-Update
│ ├── Settings/ # Tab-basierte Settings-Page
│ ├── Admin/ # Dashboard-Cleanup, Widget, DB-Tools
│ ├── Db/ # BackupStorage, Exporter, Importer, SearchReplace
│ └── Sync/ # Peer-Registry, HMAC-Auth, Sync-Network
├── assets/ # Admin-Assets
└── .github/workflows/ # Release-Automation
Beim Pull/Push dumpt der Exporter die Datenbank und importiert sie auf der Ziel-Seite. LocalOptionGuard und SyncDefaults::excludedTables() schützen site-spezifische Daten vor dem Überschreiben.
Geschützt (bleiben auf dem Ziel unverändert): plugin-eigene Options (rhbp_*), Site-Identität (siteurl, home, admin_email), Plugin-Aktivierung (active_plugins), cron, rewrite_rules, Hosting-Pfade, WP-Core-SMTP, DB-Schema-Versionen, Update-Transients sowie Options von Limit Login, WP Mail SMTP und WPS Hide Login.
Vom Export ausgeschlossen: wp_actionscheduler_* und wp_woocommerce_sessions.
Erweiterbar via Filter:
add_filter('rh-blueprint/sync/preserved_option_names', fn(array $n) => [...$n, 'custom_api_key']);
add_filter('rh-blueprint/sync/preserved_option_patterns', fn(array $p) => [...$p, 'my\\_plugin\\_%']);
add_filter('rh-blueprint/sync/excluded_tables', function (array $t) {
global $wpdb;
$t[] = $wpdb->prefix . 'visitor_tracking';
return $t;
});wp_users+wp_usermetawerden komplett gesynct. Admin-Passwörter wandern mit, der User-Satz auf dem Ziel wird ersetzt. Für lokal → Stage im selben Projekt unkritisch, für echte Kunden-Syncs ein Problem. EinUserGuardist geplant.- Kein Background-Job-Modus. Export und Import laufen synchron im REST-Request. DBs über ~50 MB können ins HTTP-Timeout laufen. Action-Scheduler-Integration ist geplant.
- Kein Rate-Limiting. Ein Peer mit gültigem Token kann beliebig viele Syncs triggern.
- Keine Medien. Nur Datenbank-Tabellen werden transferiert, Upload-Files nicht. Dafür braucht es zusätzlich
rsynco.ä.
GPL-2.0-or-later