goodwp/goodenberg
GitHub: goodwp/goodenberg
Stars: 23 | Forks: 0
# Goodenberg
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.
## Table of Contents
- [Changelog](./CHANGELOG.md)
- [Versioning / Supported WordPress versions](#versioning--supported-wordpress-versions)
- [JavaScript / React](#javascript--react)
- [PHP](#php)
- [Examples](#examples)
## Versioning / Supported WordPress versions
Current supported WordPress version: WordPress 6.5
## JavaScript / React
All JavaScript code is developed inside the `src` directory.
### Usage
1. Install the package via `npm install @goodwp/goodenberg`
2. Use `@wordpress/scripts` for an easy build process and to automatically extract dependencies
3. Use single components/hooks/etc
- All submodules (see below) can be imported from the submodules entrypoint
`import {Page} from "@goodwp/goodenberg/admin/components";`
- All submodules also provide directory-based imports:
`import {Page} from "@goodwp/goodenberg/admin/components/page";`
### Architecture
The library only uses babel with the `@wordpress/babel-preset-default` preset to transpile each single js file, but does
not have any other build-process. It is suggested to use
@wordpress/scripts or a custom webpack config to bundle it.
Styles are created via @emotion to avoid requiring an additional stylesheet.
### Components (`components`)
React components to be used in your admin screens or custom blocks.
- [EntityRecordsSelect](src/components/entity-records-select/README.md): A component which allows a user to select
multiple records (
post, term,
etc.).
- [EntityRecordSelect](src/components/entity-record-select/README.md): A component which allows a user to select a
single
record (
post, term, etc.).
[More Information](src/components/README.md)
### Admin (`admin`)
React components, hooks, and utils for building pages in the wp-admin.
Useful for building custom plugin pages, settings pages, etc. To be used together with @wordpress/components.
#### Components
- [Page](src/admin/components/README.md): A component to build a complete wp-admin page, including header, content,
notices.
- [Page.Header](src/admin/components/README.md): A header bar for wp-admin pages.
- [AdminNotices](src/admin/components/README.md): A "slot" which will render all admin notices that were rendered on the
server
- [Bar](src/admin/components/README.md): A full-width navigation bar for headers/footers on admin pages (used in
Page.Header).
- [Container](src/admin/components/README.md): A centered container which has a configurable default max-width.
- [TabPanel](src/admin/components/README.md): A styled version of WordPress TabPanel component to be used on admin pages
right beneath your Page.Header.
[More Information](src/admin/components/README.md)
#### Router
A simple "router" to render some components based on a current active "route".
There are two implementations (one for URL-based routing, on for state-based routing).
Both provide a similar API.
[More Information](src/admin/router/README.md)
### Hooks (`hooks`)
React hooks to be used in your admin screens or custom blocks.
- [`useApiFetch`](src/hooks/use-api-fetch/README.md): A hook wrapper around
the [`apiFetch`](https://developer.wordpress.org/block-editor/reference-guides/packages/packages-api-fetch/) function
from core.
- [`useLocation`/`useHistory`](src/hooks/use-location/README.md): A hook to use the URL/window.location and history
object to use
browser
navigation.
[More Information](src/hooks/README.md)
### Utils (`utils`)
Handy utility functions.
- `getBlockStyle(className: string)`: Get the selected/applied block style by its classname.
- `onBlockRegistration(blockName, namespace, callback)`: Allows hooking into the registerBlockType hook of a specific
block. Avoid having to check for the block name in your callback.
- `onBlockEdit(blockName, namespace, callback, higherOrderComponent = false)`: Allows hooking into the BlockEdit hook of
a specific block. Avoid having to check for the block name in your callback.
[More Information](src/utils/README.md)
## PHP
All PHP code is developed inside the `lib` directory.
**Usage**
1. Install the package via `composer require goodwp/goodenberg`
2. Load your composers autoload file in your plugin/theme.
3. Use the classes and helpers.
[More Information](lib/README.md)
## Examples
The [examples directory](./examples) contains a plugin which uses a lot of the components.
You can also test this plugin via @wordpress/env:
1. Clone the repository
2. Run `npm install`
3. Run `npm env:start`
4. Open `http://localhost:8888/wp-admin` and login with `admin` / `password`
5. Activate the plugin and open the example pages.
You can also use [WordPress Playground](https://playground.wordpress.net/) to directly see the examples in a browser:
1. Download the examples plugin from
the [latest release](https://github.com/goodwp/goodenberg/releases/latest/download/goodenberg-examples.zip).
2. Go to https://playground.wordpress.net/
3. Upload and activate the plugin
4. Go to the new admin page "Goodenberg examples"
## Bugs, Issues, Security Issues, Feature Requests
Visit our [GitHub Repository](https://github.com/goodwp/goodenberg).
Inspired by [10up/block-components](https://github.com/10up/block-components).
标签:自定义脚本