Gutenberg

Description

The block editor was introduced in core WordPress with version 5.0 but the Gutenberg project will ultimately impact the entire publishing experience including customization (the next focus area). This beta plugin allows you to test bleeding-edge features around editing and customization projects before they land in future WordPress releases.

Discover more about the project.

Editing focus

The editor will create a new page- and post-building experience that makes writing rich posts effortless, and has “blocks” to make it easy what today might take shortcodes, custom HTML, or “mystery meat” embed discovery. — Matt Mullenweg

One thing that sets WordPress apart from other systems is that it allows you to create as rich a post layout as you can imagine — but only if you know HTML and CSS and build your own custom theme. By thinking of the editor as a tool to let you write rich posts and create beautiful layouts, we can transform WordPress into something users love WordPress, as opposed something they pick it because it’s what everyone else uses.

Gutenberg looks at the editor as more than a content field, revisiting a layout that has been largely unchanged for almost a decade.This allows us to holistically design a modern editing experience and build a foundation for things to come.

Here’s why we’re looking at the whole editing screen, as opposed to just the content field:

  1. The block unifies multiple interfaces. If we add that on top of the existing interface, it would add complexity, as opposed to remove it.
  2. By revisiting the interface, we can modernize the writing, editing, and publishing experience, with usability and simplicity in mind, benefitting both new and casual users.
  3. When singular block interface takes center stage, it demonstrates a clear path forward for developers to create premium blocks, superior to both shortcodes and widgets.
  4. Considering the whole interface lays a solid foundation for the next focus, full site customization.
  5. Looking at the full editor screen also gives us the opportunity to drastically modernize the foundation, and take steps towards a more fluid and JavaScript powered future that fully leverages the WordPress REST API.

Blocks

Blocks are the unifying evolution of what is now covered, in different ways, by shortcodes, embeds, widgets, post formats, custom post types, theme options, meta-boxes, and other formatting elements. They embrace the breadth of functionality WordPress is capable of, with the clarity of a consistent user experience.

Imagine a custom “employee” block that a client can drag to an About page to automatically display a picture, name, and bio. A whole universe of plugins that all extend WordPress in the same way. Simplified menus and widgets. Users who can instantly understand and use WordPress — and 90% of plugins. This will allow you to easily compose beautiful posts like this example.

Check out the FAQ for answers to the most common questions about the project.

Compatibility

Posts are backwards compatible, and shortcodes will still work. We are continuously exploring how highly-tailored metaboxes can be accommodated, and are looking at solutions ranging from a plugin to disable Gutenberg to automatically detecting whether to load Gutenberg or not. While we want to make sure the new editing experience from writing to publishing is user-friendly, we’re committed to finding a good solution for highly-tailored existing sites.

The stages of Gutenberg

Gutenberg has three planned stages. The first, aimed for inclusion in WordPress 5.0, focuses on the post editing experience and the implementation of blocks. This initial phase focuses on a content-first approach. The use of blocks, as detailed above, allows you to focus on how your content will look without the distraction of other configuration options. This ultimately will help all users present their content in a way that is engaging, direct, and visual.

These foundational elements will pave the way for stages two and three, planned for the next year, to go beyond the post into page templates and ultimately, full site customization.

Gutenberg is a big change, and there will be ways to ensure that existing functionality (like shortcodes and meta-boxes) continue to work while allowing developers the time and paths to transition effectively. Ultimately, it will open new opportunities for plugin and theme developers to better serve users through a more engaging and visual experience that takes advantage of a toolset supported by core.

Contributors

Gutenberg is built by many contributors and volunteers. Please see the full list in CONTRIBUTORS.md.

Blocks

This plugin provides 17 blocks.

core/block
Gutenberg
core/template-part
Gutenberg
core/social-link-
Gutenberg
core/post-content
Gutenberg
core/latest-posts
Gutenberg
core/shortcode
Gutenberg
core/legacy-widget
Gutenberg
core/tag-cloud
Gutenberg
core/categories
Gutenberg
core/post-title
Gutenberg
core/latest-comments
Gutenberg
core/site-title
Gutenberg
core/navigation
Gutenberg
core/calendar
Gutenberg
core/archives
Gutenberg
core/search
Gutenberg
core/rss
Gutenberg

FAQ

How can I send feedback or get help with a bug?

We’d love to hear your bug reports, feature suggestions and any other feedback! Please head over to the GitHub issues page to search for existing issues or open a new one. While we’ll try to triage issues reported here on the plugin forum, you’ll get a faster response (and reduce duplication of effort) by keeping everything centralized in the GitHub repository.

How can I contribute?

We’re calling this editor project “Gutenberg” because it’s a big undertaking. We are working on it every day in GitHub, and we’d love your help building it.You’re also welcome to give feedback, the easiest is to join us in our Slack channel, #core-editor.

See also CONTRIBUTING.md.

Where can I read more about Gutenberg?

Reviews

Siilo 17, 2020
This is a nightmare. I can't do anything I want with. Diverse HTML tags are taken out of your control entirely. If you want complete control over your HTML, then you need to save and maintain your content off-site, edit your HTML there, paste it into the Gutenberg-editor, save and view. If you want to change your content later, the you will have to relocate the matching html code you had saved somewhere on your computer... Is this supposed to be innovation? This is a one-way HTML editor. Once you paste your HTML into Gutenberg, then half of it is gone after saving...
Siilo 15, 2020
How do you cut and paste plain text and then format? Not easy - when you create a new para block it adds an extra line. No easy way to convert HTML back and forth without it screwing up. Doesn't recognize <i> tags when pasting. How do you insert a block? Does weird reformatting when you don't expect it. User interface is totally confusing - the so-called 'clean UI' just means there are no visual prompts. How do you superscript or subscript? Shall I go on? Total fail. This is an example of developers trying to be clever but not relying on user input for their design/coding decisions.
Siilo 15, 2020
Since I installed Gutenberg I felt in love again with WordPress. Everything is a shortcut now and it's amazing.
Siilo 15, 2020
Why is this plugin still supplied with WP. Its the worst plugin I have ever worked upon
Read all 3,006 reviews

Contributors & Developers

“Gutenberg” is open source software. The following people have contributed to this plugin.

Contributors

“Gutenberg” has been translated into 46 locales. Thank you to the translators for their contributions.

Translate “Gutenberg” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.

Changelog

New Features

  • Add a new Buttons block. #17352
  • Support adding links to Media & Text block image. #18139
  • Navigation block: Support changing the font size. #19127
  • Gallery block: Add images size selector. #18581

Enhancements

  • Improve the block inserter search algorithm. #19122
  • Improve the block placeholders design and responsiveness. #18745
  • Navigation mode: Auto-enable when tabbing to the block list with an existing block selection. #19238 #19298
  • Use tabs for gradient and color. #19133
  • Add “download” keyword to the File block. #18995
  • Add “poem” keyword to the Verse block. #19355
  • Convert to blocks:
    • preserve text alignment. #19097
    • Skip shortcode if not on its own line. #19059
  • Writing flow: Improve tabbing for Edit mode. #19235
  • Use Popover for the block toolbar. #18779
  • Improve the block multi-selection styles. #19094 #19121
  • Support reduced-motion for Social Links transitions. #18750
  • Use the default cursor for Select Tool #19157
  • Round position attributes on cover focal point save. #19183
  • Remove block inserter shortcuts. #19045
  • Navigation block:
    • Clarify the placeholder label. #19105
    • Removes the reusable block option from the items. #19250
    • Sub-items white background adjustment. #18976
  • Adjustments to the welcome guide. #19195
  • Audio block: Don’t render an empty audio tag. #18850
  • Make validation of block html tags and attributes case insensitive #19207
  • Block examples: concatenate strings and add translators notes. #19048
  • Show the trash button as a link. #19131
  • Removed the bottom-margin for the RadioControl component. #19340
  • Copy:
    • Capitalize “Manager” in Block Manager. #19375
    • Expand on sentence case usage. #18758 #19377
    • Update the copy of the Experiments page #18233
    • Removes title case from alignments for text and image. #18757
    • Unify not capitalizing the heading for each of the attributes. #19374
    • Updates description of the navigation block. #19098

Performance:

  • Remove the BlockAsyncRenderProvider and render parents asynchronously #19343

Bugs:

  • A11y:
    • Make text alignment items radio menu items. #19233
    • Add group role to the block wrapper element. #19213
    • Prevent tabbing to the block drag handle. #19211
    • Add a label attribute to the Social Icons block. #18651
    • Improve Welcome guide and modal component. #19261 #19290
  • Pasting:
    • Content that results in a new block shouldn’t be treated as inline content. #19084
    • Preserve inline images. #19064
    • Remove trailing br elements. #19035
    • Remove windows paste markers. #19040
    • Strip HTML formatting space for inline text. #19043
    • Apply active formats when pasting inline. #14815
  • Rich Text:
    • Fix applying a format across 2 other formats. #19053
    • Fix using composed characters on Safari. #19171
  • Fix block navigation using the up arrow key. #19135
  • Fix Welcome Guide modal display for Internet Explorer. #19201
  • Fix Gallery block crashing on the contributor role. #19060
  • Only show available image sizes for Image and Gallery blocks. #19301
  • Remove the circle mask style from the Image block, and add a “rounded” style instead. #19028
  • Fix the Jest Preset Default package: Update preset file extension for inclusion in NPM deployments. #19306
  • Fix the Base Styles package: Import colors into variables. #19159
  • Limit the Next Page (Page Break) block to root level only. #18260
  • Navigation mode: fix reverse tabbing to the post title. #19305
  • Reposition Popovers on click. #19268
  • Fix RangeControl initialPosition prop to accept 0 as a value. #18611 #19202
  • CustomSelectControl: Use items width instead of 100%. #19150
  • Verse block: fix white space. #19173
  • Add missing i18n to the Latest Posts block settings strings #19032
  • Fix ColorPicker alpha value normalization. #18991
  • Fix Post title encoding. #19187
  • Fix dates alignments in the picker. #19294
  • Media Replace Flow: Don’t show the URL option unless there is a handler. #19063
  • Popover: don’t render fallback anchor if anchorRef is defined. #19308
  • Fix cursor position when splitting blocks with IME keyboard. #19055
  • URLInput: Avoid showing the suggestions loader when disabled. #18979
  • Translate block example strings. #18162
  • Writing flow: simplify & fix tabbing out of block. #19312

New APIs:

  • Button component:
    • Support the icon prop and use a consistent button height. #19193 #19366 #19123 #19058
    • Deprecate IconButton and replace its usage with Button. #19299 #19241
    • Support isPressed prop in Button and SVG components. #17748
  • New the @wordpress/keyboard-shortcuts package:
  • New React hook: useInstanceId. #19091
  • Support running arbitrary commands on the @wordpress/env containers and use it for linting and server registered fixtures. #18986
  • Font Size Picker: Add default size #18273

Experiments

  • Full Site Editing:
    • Add package with barebones site editor screen. #19054
    • Add Multi-Entity Saving flow. #18029 #19155
  • Widgets screen & customizer:
    • Fix Customiser block editor crash. #19023
    • Fix Drag & Drop not working on the widgets screen. #19029
  • Allow parent Block to consume child Block’s toolbar. #18440
  • Allow disabling the Block UI. #18173
  • Block Directory:
    • Update the regular expression that determines whether the plugin is using an img URL or an icon slug. #19316
    • Use the block’s title for alt text on block directory plugin items. #19263

Documentation

Various

  • Block Editor: Remove legacy “editor-” class name compatibility. #19050(https://github.com/wordpress/gutenberg/pull/19046)
  • Block Editor: Test ContrastChecker notices by string comparison. #19169
  • Fix useColors crashes on storybook. [#19046]
  • Data: Remove unused forceRender argument #19206
  • Define useSelect dependencies properly. #19044
  • Deprecate @wordpress/nux package. #18981
  • E2E Test Utils: Remove empty, unused KeyboardMode file. #19166
  • Popover: remove buffer options #19283
  • Refactor the MediaReplaceFlow component to use Dropdown. #19126
  • Remove unused is-hovered class from the block wrapper. #19390
  • RichText:
    • Rewrite withFilters with hooks. #19117
    • split out boundary style calculation. #19319
  • WritingFlow: rewrite with hooks. #19393
  • Project management: Add prepublish packages command for npm releases. #19214
  • Remove unused blocks-font-size classname. #19208
  • Add a pre-commit hook to check whether API docs are updated. #18820
  • Add mechanism to set a width on withViewportMatch. #17085
  • Add minimum and maximum values to the Gallery columns attribute. #16314
  • Include demo block templates in build ZIP. #19072
  • Fix CSS Coding Standards issue. #19272
  • Resolve WordPress package type imports. #18927
  • Add e2e tests:
    • Splitting and merging text. #19049
    • InnerBlocks renderAppender. #14996
    • Navigation block. #19189
    • Validate embed rendering before proceeding to next #19042
  • Add unit tests to the useViewportMatch and useMediaQuery React hooks. #19019