spacedmonkey / wp-rest-blocks
Add gutenberg blocks data into post / page / widget REST API endpoints.
Fund package maintenance!
spacedmonkey
Installs: 1 948
Dependents: 0
Suggesters: 0
Security: 0
Stars: 122
Watchers: 5
Forks: 23
Open Issues: 18
Type:wordpress-plugin
pkg:composer/spacedmonkey/wp-rest-blocks
Requires
- php: ^7.4 || ^8.0
- composer/installers: ^2.3
- imangazaliev/didom: ^2.0
Requires (Dev)
- ergebnis/composer-normalize: ^2.48
- phpcompatibility/phpcompatibility-wp: ^2.1
- phpmd/phpmd: ^2.15
- phpstan/extension-installer: ^1.4
- phpstan/phpstan: ^2.1
- phpstan/phpstan-deprecation-rules: ^2.0
- phpstan/phpstan-strict-rules: ^2.0
- sirbrillig/phpcs-variable-analysis: ^2.11
- slevomat/coding-standard: ^8.22
- swissspidy/phpstan-no-private: ^1.0
- szepeviktor/phpstan-wordpress: ^2.0
- wp-coding-standards/wpcs: ^3.0
- yoast/wp-test-utils: ^1.2.0
- dev-master
- v2.x-dev
- 2.0.0
- 1.0.2
- 1.0.1
- 1.0.0
- 0.5.0
- 0.4.0
- 0.3.2
- 0.3.1
- 0.3.0
- 0.2.6
- 0.2.5
- 0.2.4
- 0.2.3
- 0.2.2
- 0.2.1
- 0.2.0
- 0.1.2
- 0.1.1
- 0.1.0
- dev-dependabot/npm_and_yarn/qs-6.14.1
- dev-dependabot/composer/composer/installers-tw-2.3
- dev-dependabot/github_actions/actions/checkout-6
- dev-dependabot/github_actions/actions/setup-node-6
- dev-fix/php
- dev-dependabot/npm_and_yarn/wordpress/scripts-30.1.0
- dev-dependabot/npm_and_yarn/multi-9423f4c335
- dev-dependabot/npm_and_yarn/multi-cf87d80143
- dev-dependabot/npm_and_yarn/multi-d66d039ac5
- dev-dependabot/npm_and_yarn/webpack-5.94.0
- dev-dependabot/npm_and_yarn/minimatch-10.0.1
- dev-update/cs2pr-permissions
- dev-fix/wp-version
- dev-fix/php-version
- dev-block_data
- dev-try/cache-posts
- dev-fix/first-release
- dev-build-plugin
- dev-improve-code
This package is auto-updated.
Last update: 2026-01-03 16:18:38 UTC
README
Contributors: spacedmonkey Donate link: https://github.com/sponsors/spacedmonkey Tags: blocks, gutenberg, api, wp-json, rest-api Requires at least: 5.9 Tested up to: 6.9 Requires PHP: 7.4.0 Stable tag: 2.0.0 License: GPLv3 or later License URI: https://www.gnu.org/licenses/gpl-3.0.en.html
Add gutenberg blocks data into the post / page REST API endpoints.
Description
A simple plugin to add block data in json format into the rest api. Once installed, there will be two new fields added to the rest api, has_blocks and blocks.
For example output.
"has_blocks": true,
"block_data": [
{
"blockName": "core/image",
"attrs": {
"url": "https://www.spacedmonkey.com/wp-content/uploads/2018/12/test-image.jpg",
"alt": "Terminal de aeropuerto",
"caption": "fsfsdfdsfdssfd",
"href": "https://www.spacedmonkey.com/test-image",
"rel": "noreferrer noopener",
"linkClass": "jonny-123",
"linkTarget": "_blank",
"id": 147355,
"width": 582,
"height": 327,
"linkDestination": "attachment"
},
"innerBlocks": [
],
"innerHTML": "\n<figure class=\"wp-block-image is-resized\"><a class=\"jonny-123\" href=\"https://www.spacedmonkey.com/test-image\" target=\"_blank\" rel=\"noreferrer noopener\"><img src=\"https://www.spacedmonkey.com/wp-content/uploads/2018/12/test-image.jpg\" alt=\"Terminal de aeropuerto\" class=\"wp-image-147355\" width=\"582\" height=\"327\"/></a><figcaption>fsfsdfdsfdssfd</figcaption></figure>\n",
"innerContent": [
"\n<figure class=\"wp-block-image is-resized\"><a class=\"jonny-123\" href=\"https://www.spacedmonkey.com/test-image\" target=\"_blank\" rel=\"noreferrer noopener\"><img src=\"https://www.spacedmonkey.com/wp-content/uploads/2018/12/test-image.jpg\" alt=\"Terminal de aeropuerto\" class=\"wp-image-147355\" width=\"582\" height=\"327\"/></a><figcaption>fsfsdfdsfdssfd</figcaption></figure>\n"
],
"rendered": "\n<figure class=\"wp-block-image is-resized\"><a class=\"jonny-123\" href=\"https://www.spacedmonkey.com/test-image\" target=\"_blank\" rel=\"noreferrer noopener\"><img src=\"https://www.spacedmonkey.com/wp-content/uploads/2018/12/test-image.jpg\" alt=\"Terminal de aeropuerto\" class=\"wp-image-147355\" width=\"582\" height=\"327\"/></a><figcaption>fsfsdfdsfdssfd</figcaption></figure>\n"
}
],
Technical Notes
- Requires PHP 5.6+.
- Requires WordPress 5.5+.
- Issues and Pull requests welcome on the GitHub repository: https://github.com/spacedmonkey/wp-rest-blocks
Development
This plugin uses @wordpress/env for local development and testing.
Prerequisites
- Node.js 20+ and npm
- Docker Desktop (must be installed and running)
Setup
-
Clone the repository
-
Install dependencies:
npm install composer install
-
Start the WordPress environment:
npm run env:start
This will start a local WordPress instance at
http://localhost:8888(admin:http://localhost:8888/wp-adminwith usernameadminand passwordpassword)Note: Docker must be running for this to work. The first time you run this, it will download WordPress and set up the database, which may take a few minutes.
Available Commands
npm run env:start- Start the WordPress environmentnpm run env:stop- Stop the WordPress environmentnpm run env:reset- Reset the environment (clean database)npm run env:destroy- Destroy the environment completelynpm run test:php- Run PHPUnit testsnpm run test:php:multisite- Run PHPUnit tests in multisite modenpm run lint:php- Run PHP CodeSniffernpm run lint:php:fix- Fix PHP coding standards issues automatically
Running Tests
After starting the environment with npm run env:start, you can run the tests:
npm run test:php
For multisite tests:
npm run test:php:multisite
Accessing the Site
- Development site: http://localhost:8888
- Admin dashboard: http://localhost:8888/wp-admin (admin/password)
- Test site: http://localhost:8889
- Test admin: http://localhost:8889/wp-admin (admin/password)
Installation
Using The WordPress Dashboard
- Navigate to the 'Add New' in the plugins dashboard
- Search for 'wp-rest-blocks'
- Click 'Install Now'
- Activate the plugin on the Plugin dashboard
Uploading in WordPress Dashboard
- Navigate to the 'Add New' in the plugins dashboard
- Navigate to the 'Upload' area
- Select
wp-rest-blocks.zipfrom your computer - Click 'Install Now'
- Activate the plugin in the Plugin dashboard
Using FTP
- Download
wp-rest-blocks.zip - Extract the
wp-rest-blocksdirectory to your computer - Upload the
wp-rest-blocksdirectory to the/wp-content/plugins/directory - Activate the plugin in the Plugin dashboard
Screenshots
- Add fields to the rest api.
Changelog
2.0.0
- Minimum PHP version increased from 7.0 to 7.4
- WordPress minimum version updated from 5.5 to 5.9
- Updated compatibility testing to PHP 8.0-8.4 (with 8.5 experimental support)
- Complete rewrite of code, using objects and is heavily typed.
1.0.2
- Fix issue with WordPress 6.5
- Update coding standards to WP coding standards 3.1.0
- Mark tested up to WP 6.5
1.0.1
- Update coding standards to WP coding standards 3.0.1
- Mark tested up to WP 6.4
1.0.0
Breaking change!
The field in the REST API is changed from blocks to block_data.
0.5.0
- Add support for new post types added in WordPress 5.9.
0.4.0
- Added support for block based widget, added in WordPress 5.8. Block data is added to the /wp/v2/widgets endpoint.
0.3.2
- Update translations
0.3.1
- Hot fix.
0.3.0
- Improve support for block that have attributes that use query source type.
- Improve error handling for those that install this plugin without using composer.
0.2.1
- Update dependency.
0.2.0
- Breaking change. Field names have changed and required WordPress 5.5+
0.1.0
- First version.
