axistaylor / nextpress
Render WordPress Gutenberg content 1:1 in Next.js. Extends WPGraphQL with enqueued asset queries for headless WordPress implementations.
Package info
github.com/AxisTaylor/nextpress-wp-plugin-dist
Type:wordpress-plugin
pkg:composer/axistaylor/nextpress
Requires
- php: >=7.4
Requires (Dev)
- johnpbloch/wordpress: *
- lucatume/wp-browser: ^4.0
- wp-graphql/wp-graphql-testcase: ^3.0
- wpackagist-plugin/wp-graphql: *
README
NextPress WordPress Plugin
WPGraphQL extension that exposes the data a headless Next.js frontend needs to render Gutenberg content 1:1 with the WordPress backend: per-URI enqueued scripts and stylesheets, theme.json globalStyles, font faces, the import map, and the resolved content body.
This is the WordPress half of NextPress. The matching Next.js consumer ships as the @axistaylor/nextpress npm package.
Requirements
- WordPress 6.0+
- PHP 7.4+
- WPGraphQL 1.27.0+
Installation
Via Composer (recommended)
The plugin is published on Packagist as axistaylor/nextpress and registered as a wordpress-plugin type, so Composer-managed WordPress installs (Bedrock, johnpbloch/wordpress, or any setup that has composer/installers configured) will land it in wp-content/plugins/nextpress/ automatically:
composer require axistaylor/nextpress
To pin to a specific version:
composer require axistaylor/nextpress:^1.2
If your site doesn't already have composer/installers set up, add it alongside the plugin and tell composer where wordpress-plugin packages belong:
{
"require": {
"axistaylor/nextpress": "^1.2",
"composer/installers": "^2.0"
},
"extra": {
"installer-paths": {
"wp-content/plugins/{$name}/": ["type:wordpress-plugin"]
}
}
}
Then activate the plugin:
wp plugin activate nextpress
Manual installation
Download the latest nextpress.zip from the Releases page and upload it via Plugins → Add New → Upload Plugin in your WordPress admin, or extract it into wp-content/plugins/nextpress/ directly.
What it exposes via WPGraphQL
After activating the plugin, the WPGraphQL schema gains:
assetsByUri(uri: String!)— enqueued scripts, stylesheets, and import map for a specific URI, simulated as if WordPress had rendered that page.globalStyles— theme.json compiled stylesheet, custom CSS, rendered@font-facedeclarations, and structured font-face data.templateByUri(uri: String!)— body classes, resolved content, and node-by-URI info for a single URI.
See the WordPress plugin docs for the full schema reference and example queries.
Links
- Source repository — the monorepo this plugin lives in
- Distribution repository — the tagged snapshots Packagist serves from
- Documentation
- Issue tracker