Skip to content

Wszystko o WordPressie, tworzeniu stron — i nie tylko

🚀 Auto aktualizacja wtyczek WordPress z GitHub: konfiguracja krok po kroku

🚀 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

Interfejs wtyczki Git Updater dla WordPressa

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 */
5function 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}
47add_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.md z 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 install podczas 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.