BS AWO Jobs
AWO-Stellenbörse: JSON-API-Sync und Anzeige per Shortcode mit konfigurierbarem Design.
Install
No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:
wp plugin install https://github.com/eversthomas/bs_awo-jobs/archive/refs/heads/main.zipVersion 2.0
WordPress-Plugin zur Anzeige der AWO-Stellenbörse: JSON-API synchronisieren und Stellen per Shortcode mit konfigurierbarem Design ausgeben.
Was das Plugin macht
- Backend (AWO Jobs): JSON-API-URL speichern, Fachbereich-Quelle (API oder Mandantenfeld) wählen, optional automatische Synchronisierung per WP-Cron einstellen, manuell synchronisieren. Darunter erscheint eine tabellarische Liste aller aktuellen Stellenangebote.
- Backend (Frontend): Design und Anzeige-Optionen (Farben, Layout, sichtbare Felder, Bewerbungslink) konfigurieren sowie Shortcode-Beispiele und -Dokumentation.
- Frontend: Shortcode
[bs_awo_jobs]mit Filtern (Ort, Fachbereich, Beruf, Vertragsart), Layout Liste/Kacheln, Pagination, Detailansicht. Zusätzliche Shortcodes:[bs_awo_jobs_kita],[bs_awo_jobs_pflege],[bs_awo_jobs_verwaltung]. AJAX-Filter ohne kompletten Seiten-Reload. Dynamische Styles aus den Backend-Einstellungen.
Systemvoraussetzungen
- WordPress (getestet mit 6.x)
- PHP 7.4+
- MySQL 5.7+ oder MariaDB 10.2+
Installation
- Plugin-Ordner nach
wp-content/plugins/BS_awo-jobs/legen. - Unter Plugins → Installierte Plugins das Plugin „BS AWO Jobs“ aktivieren.
- Bei Aktivierung werden die Tabellen
{prefix}bsawo_runsund{prefix}bsawo_jobs_currentangelegt.
Multisite: Bei Netzwerkaktivierung wird die Aktivierung pro Blog ausgeführt; jede Site erhält ihre eigenen Tabellen mit dem jeweiligen Tabellenpräfix.
Nutzung
- AWO Jobs (Hauptmenü): JSON-API-URL eintragen (z. B.
https://www.awo-jobs.de/stellenboerse-XYZ.json), Einstellungen speichern, dann „Jetzt synchronisieren“ ausführen. Die Tabelle darunter zeigt alle aktuellen Stellen. - Frontend (Untermenü): Design und Anzeige-Optionen anpassen, Shortcodes auf der Seite nachlesen und in Seiten/Beiträge einfügen.
- In einer Seite oder einem Beitrag den Shortcode einfügen, z. B.
[bs_awo_jobs]oder[bs_awo_jobs fachbereich="Pflege" layout="grid"].
Automatische Synchronisierung (WP-Cron)
Das Plugin kann die Stellenanzeigen automatisch über den WordPress-Cron (WP-Cron) aktualisieren. WP-Cron ist kein echter Server-Cron, sondern wird in der Regel bei Seitenaufrufen ausgelöst. Auf Websites mit regelmäßigen Zugriffen ist das in der Praxis meist ausreichend.
- Einstellung: Unter AWO Jobs → API & Sync im Dropdown „Automatischer Sync“ z. B. Alle 12 Stunden oder Täglich wählen und Einstellungen speichern.
- Empfehlung: Synchronisierung auf 2× täglich (alle 12 Stunden) stellen.
- Wenig Zugriffe: Wenn die Website nur selten besucht wird, kann WP-Cron seltener laufen. Dann den Sync regelmäßig manuell im Backend ausführen oder einen echten Server-Cron einrichten, der WP-Cron zuverlässig anstößt (z. B.
wp-cron.phpper Cron-Job aufrufen). - Im Backend ist jederzeit sichtbar, wann der letzte Sync gelaufen ist und ob er erfolgreich war.
Troubleshooting
| Problem | Mögliche Ursache | Lösung |
|---|---|---|
| Sync schlägt fehl: „Fehler beim Abruf der API“ | API der Stellenbörse nicht erreichbar oder down | URL im Backend prüfen (HTTPS), ggf. vom Anbieter prüfen lassen. Temporär: alte Daten bleiben sichtbar. |
| Automatischer Sync läuft nicht / nur bei Besuch | WP-Cron wird nur bei Seitenaufrufen ausgelöst (Low-Traffic) | Sync manuell im Backend ausführen oder einen echten Server-Cron einrichten, der z. B. https://deine-site.de/wp-cron.php?doing_wp_cron regelmäßig aufruft. |
| „Sync wird bereits ausgeführt …“ obwohl kein Sync läuft | Lock-Transient hängt (z. B. nach Abbruch oder Crash) | Lock läuft nach 10 Minuten automatisch ab. Sofort-Lösung: Plugin kurz deaktivieren und wieder aktivieren (entfernt den Lock). |
| „RENAME TABLE fehlgeschlagen (DB-Rechte?)“ | Datenbank-Benutzer hat keine Rechte für RENAME TABLE |
Beim Hoster prüfen, ob der DB-User ALTER/RENAME auf die Tabellen hat. Bis dahin: aktuelle Daten bleiben unverändert; Sync schlägt fehl und meldet den Fehler im Backend. |
Tests
Unit-Tests (PHPUnit) für z. B. Normalizer und Sync-Logik:
composer install
./vendor/bin/phpunit
Übersetzungen
Die Text-Domain ist bs-awo-jobs. Im Ordner languages/ liegt eine Vorlage bs-awo-jobs.pot. Für eine vollständige Aktualisierung der Übersetzungsvorlage (z. B. nach Code-Änderungen) kann WP-CLI genutzt werden:
wp i18n make-pot wp-content/plugins/BS_awo-jobs wp-content/plugins/BS_awo-jobs/languages/bs-awo-jobs.pot --domain=bs-awo-jobs
Sprachdateien (z. B. bs-awo-jobs-de_DE.po / .mo) in denselben Ordner legen; WordPress lädt sie automatisch.
Release-ZIP / Distribution
Für ein sauberes Release-ZIP (ohne __MACOSX/, .DS_Store usw.) wird .gitattributes mit export-ignore genutzt. Beim Archivieren mit git archive oder beim Export über GitHub Releases werden diese Dateien/Ordner automatisch ausgeschlossen.
Deinstallation
Beim Löschen des Plugins (nicht nur Deaktivieren) unter Plugins werden alle zugehörigen Optionen, Transients und Datenbanktabellen automatisch entfernt.