
🚀 Auto aktualizacja wtyczek WordPress z GitHub: konfiguracja krok po kroku
Wydał/a Pan/Pani nową wersję wtyczki na GitHub, a użytkownicy wciąż korzystają ze starej. Ręczne pobieranie ZIP-a, wgrywanie przez panel administracyjny, sprawdzanie zgodności, rutyna, która pochłania czas i generuje błędy.
Standardowy mechanizm aktualizacji WordPress opiera się na oficjalnym katalogu WordPress.org. Jednak nie każda wtyczka tam trafia: rozwiązania szyte na miarę dla klienta, wewnętrzne narzędzia zespołu, forki popularnych wtyczek z modyfikacjami. Dla nich potrzebna jest inna ścieżka.
Na szczęście dostarczanie aktualizacji bezpośrednio z GitHuba jest już dawno rozwiązane. Poniżej dwa działające sposoby: prosty (wtyczka Git Updater, kilka kliknięć) i zaawansowany (wbudowana klasa PHP dla pełnej kontroli).
💡 Szybki przegląd:
- Proszę zainstalować Git Updater: przechwytuje on wydania z GitHuba jako zwykłe aktualizacje WordPressa
- Dla repozytoriów prywatnych proszę skonfigurować token dostępu w ustawieniach wtyczki
- Jeśli pisze Pan/Pani własną wtyczkę i chce wbudować automatyczne aktualizacje w kod: proszę użyć wbudowanej klasy PHP
- Repozytorium musi zawierać poprawny nagłówek wtyczki oraz tag wersji
Sposób 1: Git Updater, aktualizacja na dwa kliknięcia

Git Updater, bezpłatna wtyczka, która dodaje obsługę GitHuba, Bitbucket, GitLaba i Gitea do standardowego ekranu aktualizacji WordPressa. Po instalacji wtyczki i motywy z GitHuba aktualizuje się tam, gdzie zwykłe, w sekcji Kokpit → Aktualizacje.
Twórca Andy Fragen utrzymuje projekt od 2015 roku. Na stronie Git Updater na GitHubie ponad 400 gwiazdek i aktywne repozytorium z regularnymi commitami. Baza wiedzy na git-updater.com opisuje instalację, konfigurację tokenów i pracę z API.
Instalacja jest prosta: proszę pobrać ZIP z wydania na GitHubie, wgrać przez Wtyczki → Dodaj nową → Wyślij wtyczkę, aktywować. Wtyczka natychmiast zaczyna śledzić repozytoria wskazane w nagłówkach zainstalowanych wtyczek i motywów.
Dla repozytoriów prywatnych potrzebny będzie token. Proszę utworzyć Personal Access Token w GitHub Settings → Developer settings → Tokens (uprawnienia: repo dla prywatnych, dla publicznych token nie jest potrzebny), wkleić w Ustawienia → Git Updater. Po tym wtyczka widzi nawet zamknięte repozytoria.
Ważny niuans: Git Updater sprawdza obecność tagów w formacie X.Y.Z (wersjonowanie semantyczne) w repozytorium. Jeśli tagów nie ma, aktualizacja nie zadziała. Przed publikacją wydania zawsze proszę ustawiać tag: git tag 1.2.0 && git push --tags.
Sposób 2: wbudowana klasa PHP dla deweloperów
Jeśli jest Pan/Pani autorem wtyczki i chce wbudować mechanizm automatycznych aktualizacji bezpośrednio w kod (bez osobnej wtyczki pośredniczącej), klasyczne podejście z klasą PHP wciąż działa. Jest ono lżejsze od klasy źródłowej Joachima Kudisha i radishconcepts i wykorzystuje natywne hooki WordPressa.
Proszę dodać następujący kod do głównego pliku wtyczki lub do osobnego pliku updater.php, podłączonego przez require_once:
1 /** 2 * Auto-update from GitHub releases. 3 * Place in main plugin file or include via require_once. 4 */ 5 function myplugin_check_github_update($transient) { 6 if (empty($transient->checked)) { 7 return $transient; 8 } 9 10 $plugin_slug = 'my-plugin/my-plugin.php'; 11 $github_repo = 'username/my-plugin'; 12 13 $response = wp_remote_get( 14 'https://api.github.com/repos/' . $github_repo . '/releases/latest', 15 array( 16 'headers' => array( 17 'Accept' => 'application/vnd.github.v3+json', 18 'User-Agent' => 'WordPress/' . get_bloginfo('version'), 19 ), 20 ) 21 ); 22 23 if (is_wp_error($response) || wp_remote_retrieve_response_code($response) !== 200) { 24 return $transient; 25 } 26 27 $release = json_decode(wp_remote_retrieve_body($response)); 28 29 if (!isset($release->tag_name)) { 30 return $transient; 31 } 32 33 $latest_version = ltrim($release->tag_name, 'v'); 34 $current_version = $transient->checked[$plugin_slug] ?? '0'; 35 36 if (version_compare($latest_version, $current_version, '>')) { 37 $transient->response[$plugin_slug] = (object) array( 38 'slug' => dirname($plugin_slug), 39 'new_version' => $latest_version, 40 'url' => 'https://github.com/' . $github_repo, 41 'package' => $release->zipball_url, 42 ); 43 } 44 45 return $transient; 46 } 47 add_filter('pre_set_site_transient_update_plugins', 'myplugin_check_github_update');
Kod robi dokładnie trzy rzeczy: odpytuje API GitHuba o najnowsze wydanie, porównuje wersję z tag_name z bieżącą wersją wtyczki i, jeśli na GitHubie jest nowsza, rejestruje aktualizację w standardowym mechanizmie WordPressa. Wersja wtyczki pobierana jest ze standardowego nagłówka Version: X.Y.Z w głównym pliku.
Proszę zwrócić uwagę: dla repozytoriów publicznych token nie jest potrzebny, ale API GitHuba bez tokena ogranicza częstotliwość zapytań do 60 na godzinę na IP. Dla wtyczki produkcyjnej z dużą liczbą użytkowników proszę dodać buforowanie wyniku przez set_transient() na 6-12 godzin. Dzięki temu nie natrafi Pan/Pani na limit przy każdym wejściu na stronę wtyczek.
Porównanie podejść
Kryterium | Git Updater | Wbudowana klasa PHP |
|---|---|---|
Złożoność konfiguracji | Minimalna (zainstalować i działa) | Średnia (trzeba napisać i przetestować kod) |
Obsługa GitLab/Bitbucket | Tak (przez dodatki API) | Nie (tylko GitHub, potrzebny osobny kod) |
Repozytoria prywatne | Tak (wbudowana obsługa tokenów) | Tak (dodać nagłówek Authorization) |
Zależność od kodu zewnętrznego | Tak (trzeba aktualizować wtyczkę) | Nie (kod wewnątrz Pana/Pani wtyczki) |
Buforowanie zapytań API | Wbudowane | Trzeba zaimplementować samodzielnie |
Odpowiednie dla | Właścicieli stron, freelancerów | Deweloperów wtyczek, agencji |
Wniosek: jeśli instaluje Pan/Pani czyjąś wtyczkę z GitHuba na stronie, proszę wybrać Git Updater. Jeśli jest Pan/Pani autorem wtyczki i dystrybuuje ją przez GitHuba, proszę wbudować automatyczną aktualizację w kod, aby użytkownik nie musiał instalować dodatkowej wtyczki.
Konfiguracja repozytorium do automatycznych aktualizacji
Niezależnie od wybranego sposobu, repozytorium na GitHubie musi być odpowiednio przygotowane. Trzy obowiązkowe punkty:
Nagłówek wtyczki. W głównym pliku PHP proszę wpisać standardowy nagłówek WordPressa: Plugin Name, Version, Author i Plugin URI z linkiem do repozytorium. Git Updater odczytuje Plugin URI i GitHub Plugin URI, proszę podać przynajmniej jeden.
Tagi wersji. Każde wydanie proszę opatrywać tagiem:
git tag 1.3.0 && git push origin 1.3.0. Bez tagów ani Git Updater, ani zapytanie API nie zobaczą nowej wersji.Plik Readme. Proszę dodać
README.mdz opisem, listą zmian (changelog) i linkiem do instalacji. Git Updater pokazuje zawartość readme na ekranie informacji o wtyczce, co oszczędza czas użytkownika, który nie musi wchodzić na GitHuba po instrukcję.
Z GitHub Actions można pójść jeszcze dalej: przy pushu tagu automatycznie budować ZIP, generować changelog z commitów i tworzyć GitHub Release z załączonym archiwum. Gotowy workflow jest w oficjalnej dokumentacji GitHuba, proszę dostosować do WordPressa, zastępując krok budowania pakowaniem wtyczki.
Na wideo pełny proces od instalacji Git Updatera do pierwszej automatycznej aktualizacji wtyczki. Zalecamy obejrzenie przed konfiguracją: 12 minut nagrania ekranu zaoszczędzi godzinę eksperymentów.
⁉️🤔 Często zadawane pytania
Czy Git Updater działa z wtyczkami z oficjalnego katalogu WordPress.org?
Tak, ale nie ma to sensu. Wtyczki z WordPress.org już otrzymują aktualizacje przez standardowy mechanizm. Git Updater jest potrzebny właśnie dla tych wtyczek i motywów, których nie ma w katalogu: rozwiązania szyte na miarę, forki, wtyczki w trakcie recenzji.
Czy można używać Git Updatera na stronie produkcyjnej?
Tak, projekt jest stabilny i utrzymywany od 2015 roku. Przed instalacją proszę wykonać pełny backup (jak przed każdą nową wtyczką). Na stronie testowej proszę sprawdzić aktualizację przynajmniej jednej wtyczki, upewnić się, że tagi w repozytorium są ustawione poprawnie i aktualizacja jest stosowana bez błędów.
Co zrobić, jeśli API GitHuba napotyka limit zapytań?
Dla repozytoriów publicznych limit wynosi 60 zapytań na godzinę z jednego IP. Git Updater buforuje odpowiedzi na 12 godzin, więc problem występuje rzadko. Jeśli się pojawi, proszę utworzyć bezpłatny Personal Access Token (bez dodatkowych uprawnień) i dodać w Ustawienia → Git Updater: limit natychmiast wzrasta do 5000 zapytań na godzinę.
Co zrobić, jeśli wtyczka na GitHubie używa zależności Composera?
Git Updater nie uruchamia
composer installpodczas aktualizacji. Jeśli Pana/Pani wtyczka zależy od pakietów Composera, proszę wbudować autoloading przez bundle (spakowaćvendor/w ZIP-ie wydania) lub dodać skrypt po aktualizacji, który sprawdza obecność zależności i ostrzega administratora w przypadku ich braku.
Czy można aktualizować wtyczki z prywatnego repozytorium na darmowym GitHubie?
Tak. Darmowe konta GitHub obejmują nieograniczoną liczbę prywatnych repozytoriów. Proszę utworzyć Personal Access Token z uprawnieniem
repo, dodać w Git Updaterze, wtyczka uzyska dostęp do Pana/Pani prywatnych repozytoriów.
Automatyczne aktualizacje z GitHuba: co wybrać w 2026 roku
Dla właściciela strony odpowiedź jest jednoznaczna, Git Updater. Bezpłatnie, stabilnie, nie wymaga kodu.
Dla dewelopera wtyczki wybór zależy od grupy odbiorców. Jeśli Pana/Pani produkt instalują zwykli użytkownicy, proszę wbudować klasę PHP automatycznej aktualizacji bezpośrednio w kod wtyczki. Dodatkowa wtyczka pośrednicząca w łańcuchu obniża konwersję instalacji. Jeśli produkt jest dla odbiorców technicznych, Git Updater w zależnościach jest dopuszczalny, proszę tylko wskazać to w instrukcji.
Proszę sprawdzić swoje wtyczki na GitHubie już teraz: czy są tagi na ostatnich wydaniach, czy wypełnione jest Plugin URI w nagłówku, czy użytkownik ma jasną ścieżkę aktualizacji? Piętnaście minut konfiguracji uwolni Pana/Panią i Pana/Pani użytkowników od ręcznej udręki z archiwami ZIP na lata do przodu.



