Plugin WordPress che esporta il sito in HTML statico, lo ottimizza (WebP, pulizia HTML, SEO, HTTPS) e lo pubblica su GitHub — tutto in background, senza bisogno di git sul server.
Pensato per il flusso WordPress di staging → sito statico in produzione (GitHub Pages, Cloudflare Pages, Netlify o qualsiasi CDN).
- Visita il sito partendo da home,
robots.txt, sitemap e home delle lingue; scarica pagine, immagini, CSS, font e ogni risorsa interna. - Sitemap complete e annidate: riconoscimento dal contenuto (
<sitemapindex>/<urlset>), quindi supporta le sitemap di default di WordPress (wp-sitemap.xmle figlie paginate), i plugin SEO e qualunque nome custom, con ricorsione illimitata. Estrae ancheimage:loc,video:loc, hreflangxhtml:linke i fogli di stile XSL. - Multilingua generalizzato: lingue rilevate da WPLingua, Polylang, WPML, TranslatePress oppure — per qualsiasi altro caso — dai tag
hreflange dai percorsi/xx/ricorrenti della home. - Cattura la pagina 404 di WordPress (→
404.html) e include automaticamente gli indici di ricerca di wp-static-fuse-search (uploads/static-search/*.json).
- PNG/JPG → WebP (Imagick o GD, con orientamento EXIF e trasparenza) e riscrittura di tutti i riferimenti,
srcsetinclusi. - Pulizia HTML via parser DOM: commenti, JavaScript (opzionale, di default rimosso), preload/prefetch di JS, handler
on*, promozione del lazy-load, unwrap dei<noscript>, minificazione conservativa. I dati strutturati JSON-LD e gli script in whitelist (es. la ricerca Fuse) sopravvivono sempre. - Trasformazione del dominio: inserisci l'URL di produzione (es.
https://www.esempio.com/) e ogni riferimento all'host attuale viene riscritto — protocollo incluso — in link, canonical, og:url, hreflang, srcset, CSS, JSON-LD (anche escapati), sitemap e robots. Funziona anche tra domini completamente diversi. - HTTPS forzato (anti mixed-content) + meta
upgrade-insecure-requestscome rete di sicurezza. - Sitemap ripulite dai feed,
robots.txtriscritto,ads.txtesportato o generato dall'ID AdSense. - Iniezione di Google Analytics 4 e Google AdSense.
- Audit finale scaricabile: link/risorse interne rotte + controlli SEO (title, meta description, canonical, H1, lang, alt, URL http o dell'host di origine residui).
- Motore "pacchetto git" (default): gli oggetti git vengono costruiti in PHP e spediti in un solo upload sul protocollo nativo (
git-receive-pack) — nessun rate limit dell'API REST, nessun binariogitrichiesto. Fallback automatico al motore API REST (parallelo, con deduplica SHA e gestione del rate limit). - Deduplica: gli SHA git sono calcolati in locale; vengono trasferiti solo i file nuovi o modificati.
- Due branch:
raw(export originale) emain(sito ottimizzato).README.md,.gitignoreeCNAMEdel repository vengono preservati; push saltato se non ci sono modifiche; repository vuoti e branch mancanti gestiti. - Repository auto-mappato dal dominio di produzione (es.
www.esempio.com), con override. - Token salvato cifrato (AES-256-CBC con i salt di WordPress).
- Pipeline in background a cicli con ripresa automatica e watchdog WP-Cron: si può chiudere la pagina.
- Export manuale o pianificato (giornaliero/settimanale).
- Dashboard nativa WordPress: stato, barra di avanzamento, log in tempo reale.
- Pagina Artefatti: download di ZIP raw/ottimizzato, report e log; eliminazione singola o totale; retention configurabile.
- WordPress 5.8+ (consigliato 6.x)
- PHP 7.4+ con estensione
dom;imagickogdper la conversione WebP;zipper gli ZIP scaricabili - Un repository GitHub e un token con permesso
repo(classic) oContents: read & write(fine-grained)
- Scarica
static-export-deploy.zipdall'ultima release (oppure clona il repo e impacchettalo). - WordPress → Plugin → Aggiungi nuovo → Carica plugin → attiva.
- Static Export → Impostazioni: inserisci token e proprietario GitHub.
- (Consigliato) imposta l'URL di produzione, es.
https://www.esempio.com/. - Static Export → Dashboard → Avvia export & deploy.
crawl ──► zip raw ──► deploy branch raw ──► copia di lavoro
──► ottimizzazione (WebP, HTML, dominio, https, GA/Ads)
──► audit SEO/link ──► zip main ──► deploy branch main
Ogni fase lavora a lotti dentro un budget di tempo (default 20 s) e salva lo stato su disco: il processo riprende da dove si era fermato anche dopo timeout o riavvii. Gli artefatti vivono in wp-content/uploads/sed-export/ (protetto da .htaccess).
Il workflow build-release.yml impacchetta automaticamente il plugin: alla pubblicazione di una release su GitHub, crea static-export-deploy.zip (cartella installabile con sorgenti, readme.txt e licenza) e lo allega alla release.
Per rilasciare una nuova versione:
- aggiorna
Versioninstatic-export-deploy.php,SED_VERSIONeStable taginreadme.txt; - aggiorna
CHANGELOG.md; - crea un tag (es.
v1.7.1) e pubblica la release: lo ZIP arriva da solo.