Plan Integration self-updates
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/chmajster/wordpress-pluginchecker/archive/refs/heads/main.zipShips its own WordPress updater (built-in updater), so new versions show up under Dashboard → Updates.
Readme
Plan Integration — WordPress Plugin Checker
Samodzielna wtyczka WordPress integrująca aplikację Plan z WordPressem i aktualizowana bezpośrednio z GitHub Releases repozytorium chmajster/WordPress-PluginChecker.
Wymagania
- WordPress 6.0 lub nowszy; testowane pod WordPress 7.1.
- PHP 8.2, 8.3 lub 8.4.
- Brak zależności wymagających ręcznego
composer installlubnpm installpo instalacji ZIP.
Instalacja
- Pobierz
plan-integration.zipz wybranego GitHub Release. - WordPress → Wtyczki → Dodaj nową → Wyślij wtyczkę na serwer.
- Wskaż
plan-integration.zip. - Zainstaluj i aktywuj.
- Skonfiguruj URL aplikacji w Ustawienia → Plan Integration.
ZIP zawsze zawiera katalog główny plan-integration/, dlatego wynikowa ścieżka to wp-content/plugins/plan-integration/.
Mechanizm aktualizacji
Updater korzysta z WordPress HTTP API i endpointu GitHub Releases. Nie sprawdza commitów na main i nie używa WordPress.org.
Zasady kanału stable:
- pobierane są Releases repozytorium
chmajster/WordPress-PluginChecker; - Draft są ignorowane;
- Prerelease są ignorowane;
- tag musi mieć format
vX.Y.Z; - wersje są porównywane przez SemVer;
- akceptowany jest wyłącznie asset
plan-integration.zip; - brak tego assetu blokuje aktualizację zamiast używania
Source code (zip); - wynik jest cache'owany przez 12 godzin;
- błędy GitHub API są cache'owane krótko i nie powodują błędu krytycznego WordPress.
W Ustawienia → Plan Integration dostępne są status, wersja lokalna i zdalna, czas ostatniego sprawdzenia, URL Release oraz bezpieczna diagnostyka.
Publiczne i prywatne repozytorium
Dla repozytorium publicznego token nie jest wymagany.
Dla repozytorium prywatnego ustaw token poza kodem wtyczki, np. w wp-config.php:
define('PLAN_GITHUB_TOKEN', 'github_pat_...');
Alternatywnie ustaw zmienną środowiskową PLAN_GITHUB_TOKEN.
Token nie jest prezentowany w UI i nie jest zapisywany przez wtyczkę. Dla prywatnych assetów updater pobiera plik przez GitHub Assets API z nagłówkiem Authorization przekazywanym wyłącznie w żądaniu HTTP.
Proces wydania
- Wszystkie zmiany trafiają do
mainprzez Pull Request. - Po merge uruchom testy CI.
- Zmień
Version:wplan-integration.phpiStable tag:wreadme.txtw PR przygotowującym wydanie. - Po merge utwórz tag, np.
v1.2.0. - Workflow
.github/workflows/wordpress-plugin-release.ymlsprawdzi zgodność tagu z nagłówkiem pluginu. - Workflow uruchomi testy, przygotuje
plan-integration/, utworzy deterministycznyplan-integration.zip, utworzy lub uzupełni GitHub Release i doda ZIP jako asset.
Release zostanie przerwany, jeśli tag i wersja wtyczki nie są identyczne.
Zawartość ZIP
plan-integration/
├── plan-integration.php
├── includes/
├── assets/
├── languages/
├── vendor/
├── readme.txt
└── uninstall.php
Do paczki nie trafiają .git, .github, tests, pliki buildu ani dokumentacja repozytorium.
Rollback
Automatyczny rollback nie jest wykonywany.
- Otwórz poprzedni GitHub Release.
- Pobierz jego
plan-integration.zip. - W WordPress wybierz Wtyczki → Dodaj nową → Wyślij wtyczkę na serwer.
- Wskaż poprzedni ZIP.
- Potwierdź zastąpienie obecnej wersji.
- Zweryfikuj aktywację i konfigurację po cofnięciu.
Testy
php tests/run.php
find . -type f -name '*.php' -not -path './vendor/*' -print0 | xargs -0 -n1 php -l
CI wykonuje testy na PHP 8.2, 8.3 i 8.4. Testy obejmują tę samą wersję, nowszą wersję, starszą wersję, prerelease, draft oraz brak wymaganego assetu.
Architektura
plan-integration.php— bootstrap.includes/class-plan-version.php— czysta logika SemVer i wyboru stabilnego Release.includes/class-plan-updater.php— GitHub API, cache, WordPress update transient i pobieranie prywatnych assetów.includes/class-plan-settings.php— konfiguracja i diagnostyka w panelu WordPress.includes/class-plan-integration.php— punkt rozszerzenia dla przyszłego SSO, mapowania kont/rol i API aplikacji Plan.