Bird
Raised Fist0
Wordpressframework~5 mins

Gutenberg block editor basics in Wordpress

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Introduction

The Gutenberg block editor helps you build content by stacking blocks like text, images, and buttons. It makes editing easier and more visual.

Creating a blog post with different sections like paragraphs, images, and quotes.
Building a landing page with buttons, headings, and media.
Adding a gallery of photos to a page without coding.
Making a newsletter layout with columns and text blocks.
Editing content visually without worrying about HTML.
Syntax
Wordpress
registerBlockType('namespace/block-name', {
  title: 'Block Title',
  icon: 'smiley',
  category: 'common',
  edit: () => {
    return <p>Hello from the block editor!</p>;
  },
  save: () => {
    return <p>Hello saved content!</p>;
  },
});

registerBlockType defines a new block with a unique name.

The edit function shows what you see while editing.

Examples
A basic text block that shows the same text in editor and saved content.
Wordpress
registerBlockType('myplugin/simple-text', {
  title: 'Simple Text',
  icon: 'text',
  category: 'text',
  edit: () => <p>Type your text here.</p>,
  save: () => <p>Type your text here.</p>,
});
A block that displays an image both in editor and on the site.
Wordpress
registerBlockType('myplugin/image-block', {
  title: 'Image Block',
  icon: 'format-image',
  category: 'media',
  edit: () => <img src="https://example.com/image.jpg" alt="Example" />, 
  save: () => <img src="https://example.com/image.jpg" alt="Example" />,
});
Sample Program

This block shows a friendly message in the editor and on the published page. It uses useBlockProps for proper styling and accessibility.

Wordpress
import { registerBlockType } from '@wordpress/blocks';
import { useBlockProps } from '@wordpress/block-editor';

registerBlockType('myplugin/hello-block', {
  title: 'Hello Block',
  icon: 'smiley',
  category: 'widgets',
  edit: () => {
    const blockProps = useBlockProps();
    return <p {...blockProps}>Hello from the Gutenberg editor!</p>;
  },
  save: () => {
    const blockProps = useBlockProps.save();
    return <p {...blockProps}>Hello from the saved content!</p>;
  },
});
OutputSuccess
Important Notes

Always use unique names for blocks to avoid conflicts.

Use useBlockProps to add necessary HTML attributes for accessibility and styling.

The edit function runs in the editor, while save defines what appears on the live site.

Summary

Gutenberg blocks let you build content visually by stacking pieces called blocks.

Each block has an edit view for editing and a save view for the final content.

Using blocks makes content creation easier and more flexible without coding HTML.

Practice

(1/5)
1. What is the main purpose of Gutenberg blocks in WordPress?
easy
A. To build content visually by stacking pieces called blocks
B. To write PHP code for themes
C. To manage user roles and permissions
D. To create database tables

Solution

  1. Step 1: Understand Gutenberg blocks concept

    Gutenberg blocks allow users to build content visually by stacking blocks instead of writing code.
  2. Step 2: Compare options with this concept

    Options A, B, and D relate to other WordPress functions, not content building with blocks.
  3. Final Answer:

    To build content visually by stacking pieces called blocks -> Option A
  4. Quick Check:

    Gutenberg blocks = Visual content building [OK]
Hint: Blocks stack visually to build content, not code or settings [OK]
Common Mistakes:
  • Confusing blocks with coding PHP
  • Thinking blocks manage users or database
  • Mixing blocks with theme development
2. Which of the following is the correct way to define the edit function in a custom Gutenberg block?
easy
A. function edit() {

Hello Block

; }
B. def edit(): return '

Hello Block

'
C. edit = function() { echo 'Hello Block'; }
D. const edit = () => { return

Hello Block

; };

Solution

  1. Step 1: Identify JavaScript syntax for Gutenberg blocks

    Gutenberg blocks use modern JavaScript with arrow functions for edit.
  2. Step 2: Check each option's syntax

    const edit = () => { return <p>Hello Block</p>; }; uses arrow function returning JSX, which is correct. function edit() { <p>Hello Block</p>; } does not return the JSX element. edit = function() { echo 'Hello Block'; } uses PHP syntax, and B uses Python syntax, both invalid here.
  3. Final Answer:

    const edit = () => { return <p>Hello Block</p>; }; -> Option D
  4. Quick Check:

    Gutenberg edit uses JS arrow functions [OK]
Hint: Gutenberg edit uses JavaScript arrow functions returning JSX [OK]
Common Mistakes:
  • Using PHP or Python syntax instead of JavaScript
  • Not returning JSX properly
  • Using old function syntax without React import
3. Given this simple block edit function, what will be rendered in the editor?
const edit = () => {
return <p>Welcome to Gutenberg!</p>;
};
medium
A. A paragraph with text 'Welcome to Gutenberg!'
B. An empty block with no content
C. A syntax error preventing rendering
D. A button labeled 'Welcome to Gutenberg!'

Solution

  1. Step 1: Analyze the edit function return value

    The function returns a paragraph element with the text 'Welcome to Gutenberg!'.
  2. Step 2: Understand editor rendering behavior

    The editor shows the returned JSX content, so a paragraph with that text appears.
  3. Final Answer:

    A paragraph with text 'Welcome to Gutenberg!' -> Option A
  4. Quick Check:

    JSX return = paragraph text shown [OK]
Hint: JSX returned in edit shows as block content in editor [OK]
Common Mistakes:
  • Thinking it renders a button
  • Assuming syntax error without checking code
  • Expecting empty content when JSX is returned
4. What is wrong with this Gutenberg block save function?
const save = () => {
<div>Saved content</div>;
};
medium
A. save function should be async
B. Using <div> instead of <p> tag
C. Missing return statement in the save function
D. save function cannot use JSX

Solution

  1. Step 1: Check function syntax for returning JSX

    The save function has JSX but no return statement, so it returns undefined.
  2. Step 2: Understand save function requirements

    Save must return JSX to render saved content; missing return causes no output.
  3. Final Answer:

    Missing return statement in the save function -> Option C
  4. Quick Check:

    JSX must be returned in save function [OK]
Hint: Always return JSX in save function to render content [OK]
Common Mistakes:
  • Forgetting return keyword
  • Thinking tag choice causes error
  • Assuming save must be async
5. You want to create a custom Gutenberg block that shows a user-editable heading and paragraph. Which two functions must you define to make this block work properly?
hard
A. registerBlockType and enqueueScripts only
B. edit and save functions to handle editing and saving content
C. PHP render callback and CSS styles only
D. enqueueScripts and enqueueStyles only

Solution

  1. Step 1: Identify core Gutenberg block functions

    Every block needs an edit function to show editing UI and a save function to define saved content.
  2. Step 2: Compare options with required functions

    edit and save functions to handle editing and saving content correctly lists edit and save. Other options mention scripts or PHP but miss these core functions.
  3. Final Answer:

    edit and save functions to handle editing and saving content -> Option B
  4. Quick Check:

    Blocks need edit + save functions [OK]
Hint: Blocks always need edit and save functions [OK]
Common Mistakes:
  • Thinking only scripts or PHP are enough
  • Forgetting save function
  • Confusing enqueueing scripts with block logic