@tiebreak-websites/astro-wp
v0.0.6
Published
Tiebreak - Astro WordPress
Keywords
Readme
Astro + WordPress API SDK
The WordPress API SDK lives in src/api/wp/ and wraps the WordPress REST API with helpers for pages, menus, forms, media, custom post types, and build-time static path generation.
When to use what
| Task | Module |
| --- | --- |
| Fetch any WordPress endpoint with sensible defaults | fetch |
| Core URL, language, and shared data helpers | wordpress |
| Authenticate against protected content | auth |
| Load page + shared site data in one object | loader |
| Fetch WordPress pages | pages |
| Fetch navigation menus | menus |
| Generate Astro static paths from WordPress | static-paths |
| Fetch custom post types | custom-post-types |
| Fetch WordPress posts by ID | posts |
| Fetch media and PDF files | media |
| Fetch forms created in WordPress admin | forms |
| Fetch TablePress sheet-and-costs tables | tablepress |
| Process WYSIWYG HTML content | processing-content |
| One-pager multisite document sites | one-pager |
Typical page flow
Most Astro pages follow this pattern:
- Call
wordpressDataLoader()in the page frontmatter to fetch shared site data and the current page. - Pass the resulting
websiteobject to a template component. - Use
getStaticPaths()helpers fromstatic-paths.jsfor dynamic routes.
---
import HomeTemplate from "@src/templates/Home.astro";
import { wordpressDataLoader } from "@src/api/wp/loader";
const website = await wordpressDataLoader({
page: "home",
astro: Astro,
});
---
<HomeTemplate website={website} />Environment variables
| Variable | Purpose |
| --- | --- |
| WP_URL | Base URL of the WordPress installation |
| WP_USER | WordPress username for Basic Auth (optional) |
| WP_APP_PASSWORD | WordPress application password (optional) |
| WP_ENV | Set to dev to include draft/private content when auth is configured |
| SITE_LANG | Default language code (fallback: en) |
| SITE_SLUG | Default page slug for one-pager sites |
SSR and multilingual support
Pass the astro instance to helpers that accept it. In SSR mode, middleware sets Astro.locals.wpUrl and Astro.locals.lang based on subdomain or path, so the same helpers work across languages without hard-coding URLs.
See wordpress for getWpUrl() and getWpLang() details.
