Skip to content

Alt om WordPress, webutvikling — og mer til

🚀 Auto-oppdatering av WordPress-plugins fra GitHub: trinnvis oppsett

🚀 Auto-oppdatering av WordPress-plugins fra GitHub: trinnvis oppsett

Du har gitt ut en ny plugin-versjon på GitHub, men brukerne sitter fast på den gamle. Å laste ned ZIP-filer manuelt, laste opp via administrasjonspanelet, sjekke kompatibilitet: rutineoppgaver som spiser tid og avler feil.

Standard oppdateringsmekanismen i WordPress er knyttet til den offisielle WordPress.org-katalogen. Men ikke alle plugins havner der: skreddersydde kundeløsninger, interne teamverktøy, forker av populære plugins med modifikasjoner. Disse trenger en annen vei.

Heldigvis ble levering av oppdateringer direkte fra GitHub løst for lenge siden. Nedenfor finner du to fungerende metoder: enkel (pluginen Git Updater, et par klikk) og avansert (en innebygd PHP-klasse for full kontroll).

💡 Rask oversikt:

  • Installer Git Updater: den fanger opp GitHub-utgivelser som vanlige WordPress-oppdateringer
  • For private repositorier, konfigurer et tilgangstoken i plugin-innstillingene
  • Hvis du skriver din egen plugin og vil bygge inn auto-oppdateringer i koden: bruk den innebygde PHP-klassen
  • Repositoriet må inneholde en gyldig plugin-header og versjonstagg

Metode 1: Git Updater, oppdateringer med to klikk

Grensesnitt for Git Updater-utvidelse for WordPress

Git Updater er en gratis plugin som legger til støtte for GitHub, Bitbucket, GitLab og Gitea i det vanlige WordPress-oppdateringsskjermbildet. Etter installasjon oppdateres plugins og temaer fra GitHub på samme sted som vanlige: Dashboard → Oppdateringer.

Utvikler Andy Fragen har vedlikeholdt prosjektet siden 2015. Git Updaters GitHub-side har over 400 stjerner og et aktivt repositorium med jevnlige commits. Kunnskapsbasen på git-updater.com dekker installasjon, token-konfigurasjon og API-bruk.

Installasjonen er enkel: last ned ZIP-filen fra GitHub-utgivelsen, last opp via Plugins → Legg til ny → Last opp plugin, og aktiver. Pluginen begynner umiddelbart å spore repositorier som er spesifisert i headeren til installerte plugins og temaer.

For private repositorier trenger du et token. Opprett et Personal Access Token i GitHub Settings → Developer settings → Tokens (rettigheter: repo for private; ikke nødvendig for offentlige), lim det inn i Settings → Git Updater. Etter det kan pluginen se selv lukkede repositorier.

En viktig detalj: Git Updater ser etter tagger i formatet X.Y.Z (semantisk versjonering) i repositoriet. Hvis det ikke finnes tagger, vil ikke oppdateringen fungere. Før utgivelse, sett alltid en tagg: git tag 1.2.0 && git push --tags.

Metode 2: innebygd PHP-klasse for utviklere

Hvis du er plugin-forfatter og ønsker å bygge inn auto-oppdateringsmekanismen direkte i koden din (uten en separat mellomliggende plugin), fungerer den klassiske PHP-klasse-tilnærmingen fortsatt. Den er lettere enn den opprinnelige klassen fra Joachim Kudish og radishconcepts og bruker native WordPress hooks.

Legg til følgende kode i pluginens hovedfil eller i en separat updater.php-fil som inkluderes via 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');

Koden gjør nøyaktig tre ting: spør GitHub API-et om den nyeste utgivelsen, sammenligner versjonen fra tag_name med gjeldende plugin-versjon, og hvis GitHub har en nyere, registrerer den oppdateringen i standard WordPress-mekanismen. Plugin-versjonen hentes fra standard Version: X.Y.Z-headeren i hovedfilen.

Merk: for offentlige repositorier trengs det ikke noe token, men GitHub API-et uten token begrenser forespørselsfrekvensen til 60 per time per IP. For en produksjonsplugin med mange brukere, legg til resultatbufring via set_transient() i 6-12 timer. På den måten treffer du ikke grensen hver gang noen besøker plugins-siden.

Sammenligning av tilnærminger

Kriterium

Git Updater

Innebygd PHP-klasse

Oppsettkompleksitet

Minimal (installer og det virker)

Middels (må skrive og teste kode)

GitLab/Bitbucket-støtte

Ja (via API-tillegg)

Nei (kun GitHub, krever separat kode)

Private repositorier

Ja (innebygd token-støtte)

Ja (legg til Authorization-header)

Avhengighet av tredjepartskode

Ja (må oppdatere pluginen)

Nei (kode inne i din plugin)

API-forespørselsbufring

Innebygd

Må implementeres selv

Egnet for

Nettstedseiere, frilansere

Plugin-utviklere, byråer

Konklusjon: hvis du installerer en GitHub-plugin fra noen andre på et nettsted, bruk Git Updater. Hvis du er plugin-forfatter og distribuerer den via GitHub, bygg inn auto-oppdateringer i koden slik at brukerne slipper å installere en ekstra plugin.

Sette opp repositoriet for auto-oppdateringer

Uansett hvilken metode du velger, må GitHub-repositoriet være riktig forberedt. Tre obligatoriske punkter:

  • Plugin-header. I hoved-PHP-filen, inkluder standard WordPress-header: Plugin Name, Version, Author, og Plugin URI med en lenke til repositoriet. Git Updater leser Plugin URI og GitHub Plugin URI; spesifiser minst én.

  • Versjonstagger. Følg hver utgivelse med en tagg: git tag 1.3.0 && git push origin 1.3.0. Uten tagger vil verken Git Updater eller API-forespørselen se den nye versjonen.

  • Readme-fil. Legg til en README.md med beskrivelse, endringslogg og installasjonslenke. Git Updater viser readme-innholdet på plugin-informasjonsskjermen, noe som sparer tid for brukere som slipper å besøke GitHub for instruksjoner.

Med GitHub Actions kan du gå lenger: ved tagg-push, bygg ZIP automatisk, generer en endringslogg fra commits, og opprett en GitHub Release med det vedlagte arkivet. En ferdig workflow er tilgjengelig i den offisielle GitHub-dokumentasjonen; tilpass den for WordPress ved å erstatte byggesteget med plugin-pakking.

Videoen viser hele prosessen fra installasjon av Git Updater til den første automatiske plugin-oppdateringen. Vi anbefaler å se den før oppsett: 12 minutter med skjermopptak vil spare en time med eksperimentering.

⁉️🤔 Ofte stilte spørsmål

Fungerer Git Updater med plugins fra den offisielle WordPress.org-katalogen?

Ja, men det er ingen vits. Plugins fra WordPress.org mottar allerede oppdateringer gjennom standardmekanismen. Git Updater er spesifikt for plugins og temaer som ikke er i katalogen: skreddersydde utviklinger, forker, plugins under vurdering.

Kan Git Updater brukes på et produksjonsnettsted?

Ja, prosjektet er stabilt og har vært vedlikeholdt siden 2015. Før installasjon, ta en full sikkerhetskopi (som med enhver ny plugin). På et testnettsted, sjekk oppdateringen av minst én plugin, forsikre deg om at tagger i repositoriet er satt riktig og at oppdateringen gjennomføres uten feil.

Hva hvis GitHub API-et treffer forespørselsgrensen?

For offentlige repositorier er grensen 60 forespørsler per time fra én IP. Git Updater bufrer svar i 12 timer, så problemet oppstår sjelden. Hvis det skjer, opprett et gratis Personal Access Token (uten ekstra rettigheter) og legg det til i Settings → Git Updater: grensen stiger umiddelbart til 5000 forespørsler per time.

Hva gjør man hvis pluginen på GitHub bruker Composer-avhengigheter?

Git Updater kjører ikke composer install under oppdateringer. Hvis pluginen din avhenger av Composer-pakker, bygg inn autoloading via en bundle (pakk vendor/ i utgivelses-ZIP-en) eller legg til et post-update-skript som sjekker avhengigheter og advarer administratoren hvis de mangler.

Kan plugins oppdateres fra et privat repositorium på gratis GitHub?

Ja. Gratis GitHub-kontoer inkluderer ubegrensede private repositorier. Opprett et Personal Access Token med repo-rettighet, legg det til i Git Updater, og pluginen vil få tilgang til dine private repositorier.

Auto-oppdateringer fra GitHub: hva man skal bruke i 2026

For en nettstedseier er svaret klart: Git Updater. Gratis, stabilt, krever ingen kode.

For en plugin-utvikler avhenger valget av målgruppen. Hvis produktet ditt installeres av vanlige brukere, bygg inn auto-oppdaterings-PHP-klassen direkte i plugin-koden. En ekstra mellomliggende plugin i kjeden reduserer installasjonskonverteringen. Hvis produktet er for et teknisk publikum, er Git Updater som avhengighet akseptabelt; bare nevn det i instruksjonene.

Sjekk GitHub-pluginene dine akkurat nå: er tagger satt på de nyeste utgivelsene, er Plugin URI fylt ut i headeren, har brukeren en tydelig oppdateringsvei? Femten minutter med oppsett vil spare deg og brukerne dine for manuelt bryderi med ZIP-arkiver i årevis fremover.