Local WordPress, static hosting
Run WordPress on your computer and publish HTML on hosting that does not run PHP.
Placeholder embed
Replace videoId and poster when the recording is published.
Production script:
docs/tivlo-ssg-video-scripts/17-use-case-local-static-host.md.
Who this is for
Teams that want the WordPress editor without PHP or MySQL on the public host: a laptop CMS, a private staging box, or a locked-down network. The public site is a folder of HTML.
Tivlo does not upload that folder for you. There is no Netlify,
Vercel, or SFTP button in the plugin. You copy
wp-content/tivlo-static/ to any host that can serve files (object
storage, nginx, a static platform, a CDN in front of a bucket). Copy,
paste, publish. Very 2004. Still the right tool.
The problem
A public WordPress install is a moving PHP app: plugins, login, and the database stay exposed. If visitors only need HTML, you can keep WordPress off the internet and still edit with the tools you know.
What Tivlo actually does
Generation always fetches this WordPress install. Public Base
URL only rewrites home/site URLs inside the written files so links
point at https://www.example.com instead of http://localhost:10004.
You still have to solve assets. Theme CSS, plugin JS, and uploads keep their WordPress origin unless you rewrite them through Static export + S3 (CDN Scenario 2). If you skip that step and stop local WordPress, visitors get HTML with broken images and styles. It looks haunted. It is just localhost.
Do not ship localhost URLs
Set Public Base URL before Full Rebuild. Pair this guide with S3 + CloudFront for media and CSS/JS whenever the CMS will not stay online.
The setup
Run WordPress locally (Local, Docker, wp-env, or similar). Install
Tivlo Static Site into wp-content/plugins/tivlo-static-site/.
Pretty permalinks on.
Plugin Settings → Export Folders & Target Routing → Public Base URL
= the live origin, for example https://www.example.com. Save
Settings.
Configure CDN Scenario 2 (rewrite media and CSS/JS, S3 sync on, Test Connection, Sync Existing Media). Save CDN Settings.
Build Console → Full Rebuild until the queue is empty. Open an
exported index.html and confirm links use the public origin, not
localhost.
Upload the contents of wp-content/tivlo-static/ to the static
host so index.html is the site root, about/ is a folder, and
404.html sits at the root if you export the 404 page.
Point the public domain at that host. Confirm HTML from the static host and images from the CDN domain. Then you may close the laptop.
Daily routine
| When you… | What to do |
|---|---|
| Edit a post | Publish locally; drain the queue (Process Queue Now on a quiet laptop) |
| Add media | Let S3 sync run; rebuild pages that embed the new file |
| Change theme, menus, or settings | Full Rebuild, then upload new HTML |
| Ship to production | Copy the updated tivlo-static/ contents; confirm new media reached S3 |
Until a queue job finishes, the static host still has the previous HTML (or nothing). This workflow is “export then upload,” not instant edge purge of HTML unless your host does that separately.
When this is the wrong guide
If WordPress must stay public for forms, search, or the admin, use Faster pages on WordPress hosting instead, and optionally Live WordPress + CloudFront for media.
Related reading
How is this guide?