{"id":36335245,"url":"https://github.com/goodwp/goodenberg","last_synced_at":"2026-01-11T12:05:22.977Z","repository":{"id":230718147,"uuid":"780001416","full_name":"goodwp/goodenberg","owner":"goodwp","description":"Goodenberg is a library of components, helpers and examples for building modern WordPress sites and applications with the block editor and all other features introduced with Gutenberg. ","archived":false,"fork":false,"pushed_at":"2025-07-03T12:14:16.000Z","size":1030,"stargazers_count":23,"open_issues_count":5,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-11-27T14:59:22.544Z","etag":null,"topics":["gutenberg","wordpress"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/goodwp.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-03-31T12:16:13.000Z","updated_at":"2025-09-12T08:12:38.000Z","dependencies_parsed_at":"2024-04-04T09:38:53.829Z","dependency_job_id":null,"html_url":"https://github.com/goodwp/goodenberg","commit_stats":null,"previous_names":["goodwp/goodenberg"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/goodwp/goodenberg","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/goodwp%2Fgoodenberg","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/goodwp%2Fgoodenberg/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/goodwp%2Fgoodenberg/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/goodwp%2Fgoodenberg/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/goodwp","download_url":"https://codeload.github.com/goodwp/goodenberg/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/goodwp%2Fgoodenberg/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28302286,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-11T11:18:18.743Z","status":"ssl_error","status_checked_at":"2026-01-11T11:07:56.842Z","response_time":60,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["gutenberg","wordpress"],"created_at":"2026-01-11T12:05:22.177Z","updated_at":"2026-01-11T12:05:22.965Z","avatar_url":"https://github.com/goodwp.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Goodenberg\n\nGoodenberg is a library of components, helpers and examples for building modern WordPress sites and applications with\nthe block editor and all other features introduced with Gutenberg.\n\n\u003e **Warning**  \n\u003e This package is under active development and not considered stable, breaking changes can be added. I'm using the\n\u003e package\n\u003e on a few sites and some custom plugins successfully, but am still developing, optimizing and documenting it at the\n\u003e moment.\n\n## Table of Contents\n\n- [Changelog](./CHANGELOG.md)\n- [Versioning / Supported WordPress versions](#versioning--supported-wordpress-versions)\n- [JavaScript / React](#javascript--react)\n- [PHP](#php)\n- [Examples](#examples)\n\n## Versioning / Supported WordPress versions\n\nThe library will follow SemVer versioning. Major versions and breaking changes will be kept to a minimum.\nEach minor version will support the latest stable WordPress version at the time of release.\nDevelopment versions will try to work with newer Gutenberg versions.\n\nCurrent supported WordPress version: WordPress 6.5\n\n## JavaScript / React\n\nAll JavaScript code is developed inside the `src` directory.\n\n### Usage\n\n1. Install the package via `npm install @goodwp/goodenberg`\n2. Use `@wordpress/scripts` for an easy build process and to automatically extract dependencies\n3. Use single components/hooks/etc\n    - All submodules (see below) can be imported from the submodules entrypoint\n      `import {Page} from \"@goodwp/goodenberg/admin/components\";`\n    - All submodules also provide directory-based imports:\n      `import {Page} from \"@goodwp/goodenberg/admin/components/page\";`\n\n### Architecture\n\nThe library only uses babel with the `@wordpress/babel-preset-default` preset to transpile each single js file, but does\nnot have any other build-process. It is suggested to use\n@wordpress/scripts or a custom webpack config to bundle it.\n\nStyles are created via @emotion to avoid requiring an additional stylesheet.\n\n### Components (`components`)\n\nReact components to be used in your admin screens or custom blocks.\n\n- [EntityRecordsSelect](src/components/entity-records-select/README.md): A component which allows a user to select\n  multiple records (\n  post, term,\n  etc.).\n- [EntityRecordSelect](src/components/entity-record-select/README.md): A component which allows a user to select a\n  single\n  record (\n  post, term, etc.).\n\n[More Information](src/components/README.md)\n\n### Admin (`admin`)\n\nReact components, hooks, and utils for building pages in the wp-admin.\nUseful for building custom plugin pages, settings pages, etc. To be used together with @wordpress/components.\n\n#### Components\n\n- [Page](src/admin/components/README.md): A component to build a complete wp-admin page, including header, content,\n  notices.\n- [Page.Header](src/admin/components/README.md): A header bar for wp-admin pages.\n\n- [AdminNotices](src/admin/components/README.md): A \"slot\" which will render all admin notices that were rendered on the\n  server\n- [Bar](src/admin/components/README.md): A full-width navigation bar for headers/footers on admin pages (used in\n  Page.Header).\n- [Container](src/admin/components/README.md): A centered container which has a configurable default max-width.\n- [TabPanel](src/admin/components/README.md): A styled version of WordPress TabPanel component to be used on admin pages\n  right beneath your Page.Header.\n\n[More Information](src/admin/components/README.md)\n\n#### Router\n\nA simple \"router\" to render some components based on a current active \"route\".\nThere are two implementations (one for URL-based routing, on for state-based routing).\nBoth provide a similar API.\n\n[More Information](src/admin/router/README.md)\n\n### Hooks (`hooks`)\n\nReact hooks to be used in your admin screens or custom blocks.\n\n- [`useApiFetch`](src/hooks/use-api-fetch/README.md): A hook wrapper around\n  the [`apiFetch`](https://developer.wordpress.org/block-editor/reference-guides/packages/packages-api-fetch/) function\n  from core.\n- [`useLocation`/`useHistory`](src/hooks/use-location/README.md): A hook to use the URL/window.location and history\n  object to use\n  browser\n  navigation.\n\n[More Information](src/hooks/README.md)\n\n### Utils (`utils`)\n\nHandy utility functions.\n\n- `getBlockStyle(className: string)`: Get the selected/applied block style by its classname.\n- `onBlockRegistration(blockName, namespace, callback)`: Allows hooking into the registerBlockType hook of a specific\n  block. Avoid having to check for the block name in your callback.\n- `onBlockEdit(blockName, namespace, callback, higherOrderComponent = false)`: Allows hooking into the BlockEdit hook of\n  a specific block. Avoid having to check for the block name in your callback.\n\n[More Information](src/utils/README.md)\n\n## PHP\n\nAll PHP code is developed inside the `lib` directory.\n\n**Usage**\n\n1. Install the package via `composer require goodwp/goodenberg`\n2. Load your composers autoload file in your plugin/theme.\n3. Use the classes and helpers.\n\n[More Information](lib/README.md)\n\n## Examples\n\nThe [examples directory](./examples) contains a plugin which uses a lot of the components.\nYou can also test this plugin via @wordpress/env:\n\n1. Clone the repository\n2. Run `npm install`\n3. Run `npm env:start`\n4. Open `http://localhost:8888/wp-admin` and login with `admin` / `password`\n5. Activate the plugin and open the example pages.\n\nYou can also use [WordPress Playground](https://playground.wordpress.net/) to directly see the examples in a browser:\n\n1. Download the examples plugin from\n   the [latest release](https://github.com/goodwp/goodenberg/releases/latest/download/goodenberg-examples.zip).\n2. Go to https://playground.wordpress.net/\n3. Upload and activate the plugin\n4. Go to the new admin page \"Goodenberg examples\"\n\n## Bugs, Issues, Security Issues, Feature Requests\n\nVisit our [GitHub Repository](https://github.com/goodwp/goodenberg).\n\nInspired by [10up/block-components](https://github.com/10up/block-components).","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgoodwp%2Fgoodenberg","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgoodwp%2Fgoodenberg","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgoodwp%2Fgoodenberg/lists"}