Requirements
What Tivlo SSG needs before a first export will actually finish.
Tivlo builds each static page by asking WordPress for that public URL and saving the HTML it gets back. That is why a couple of “boring” WordPress settings matter more than they look.
Nothing here is exotic. If your site already loads in a browser and you can upload a plugin, you are most of the way there.
Software
| Requirement | Minimum | In human words |
|---|---|---|
| WordPress | 6.0 | Tested up to 7.0 |
| PHP | 7.4 | Same as the plugin header in tivlo-static-site.php |
| Pretty permalinks | Required | Settings → Permalinks must not be Plain |
| Plugin folder | wp-content/plugins/tivlo-static-site/ | The slug is tivlo-static-site; the menu says Tivlo Static Site |
Plain permalinks = home page only
URLs like ?p=123 cannot become separate files on disk without
overwriting each other. Tivlo will skip them and you will stare at a
lonely index.html wondering where About went. Choose Post name
(or any structure other than Plain), click Save Changes, then
rebuild. See
Troubleshooting.
Server (still in WordPress language)
WordPress can visit itself — Generation uses wp_remote_get()
on your home URL. In practice: if you can open the site in a browser
from the same machine that runs PHP, you are fine. Local tools
(Local, Docker, MAMP) sometimes need a moment the first time. If
exports time out, we cover that in Troubleshooting — it is usually
“the site is busy talking to itself,” not a broken theme.
WordPress can write files — Tivlo creates
wp-content/tivlo-static/ (and a {site-slug}/ folder on
multisite). If that folder cannot be created, exports fail with
“Could not write static file.” Same class of problem as “could not
upload an image,” just a different folder.
Something has to run the to-do list — The queue worker is the
WordPress event tivlo_ssg_process_queue (about every minute). On a
quiet local site WP-Cron often naps until someone visits the site.
Click Process Queue Now instead of waiting for a ghost. If you
(or your host) set DISABLE_WP_CRON, a real system cron must hit
wp-cron.php or the list never shrinks.
Optional (skip until you need them)
| Optional | When you need it |
|---|---|
| AWS account, CloudFront, IAM keys | CDN & Media Sync |
| S3 bucket | Only for the “edit locally, media lives in the cloud” story |
| WooCommerce | Cart, checkout, and account pages are skipped automatically. You do not configure that. |
How is this guide?