WordPress
WordPress Gutenberg Blocks JavaScript
Gutenberg Block Registration - Basic Block
Complete code snippet for registering a basic Gutenberg block in WordPress with edit and save functions.
Register a basic Gutenberg block with edit and save functionality.
Block Registration
block.json:
{
"$schema": "https://schemas.wp.org/trunk/block.json",
"apiVersion": 3,
"name": "my-plugin/my-block",
"title": "My Block",
"category": "common",
"icon": "smiley",
"description": "A custom Gutenberg block",
"supports": {
"html": false
},
"attributes": {
"content": {
"type": "string",
"source": "html",
"selector": "p"
}
},
"editorScript": "file:./index.js",
"editorStyle": "file:./index.css",
"style": "file:./style-index.css"
}
index.js:
import { registerBlockType } from '@wordpress/blocks';
import { useBlockProps, RichText } from '@wordpress/block-editor';
import { __ } from '@wordpress/i18n';
import metadata from './block.json';
registerBlockType(metadata.name, {
edit: ({ attributes, setAttributes }) => {
const { content } = attributes;
const blockProps = useBlockProps();
return (
<div {...blockProps}>
<RichText
tagName="p"
value={content}
onChange={(value) => setAttributes({ content: value })}
placeholder={__('Enter content...', 'my-plugin')}
/>
</div>
);
},
save: ({ attributes }) => {
const { content } = attributes;
const blockProps = useBlockProps.save();
return (
<div {...blockProps}>
<RichText.Content tagName="p" value={content} />
</div>
);
},
});
Features
- RichText editing
- Block attributes
- Proper save function
- i18n support
- Block props handling