What’s new in Gutenberg 19.9? (19 December)

“What’s new in GutenbergGutenberg The Gutenberg project is the new Editor Interface for WordPress. The editor improves the process and experience of creating new content, making writing rich content much simpler. It uses ‘blocks’ to add richness rather than shortcodes, custom HTML etc. https://wordpress.org/gutenberg/” posts (#gutenberg-new) appear on a biweekly basis after every Gutenberg release, and showcase the latest features and improvements. 

Interested in learning more? Here’s an overview of how you can keep up with news and events related to Gutenberg and the BlockBlock Block is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience. Editor.


Gutenberg 19.9 is out of the oven and ready to download.

The last release of 2024 introduces the Style Book to classic themes, a new Query Total block, a swathe of component library enhancements, and code quality improvements.

Table of contents

  1. Style Book in classic themes
  2. Introducing the Query Total block
  3. More Highlights
  4. Changelog
  5. First-time contributors
  6. Contributors

Style Book in classic themes

The Style Book now appears in supported classic themes under Appearance > Design > Styles in the adminadmin (and super admin) menu. 

Support is available for classic themes that either support editor styles via add_theme_support( 'editor-styles' ) or have a theme.jsonJSON JSON, or JavaScript Object Notation, is a minimal, readable format for structuring data. It is used primarily to transmit data between a server and web application, as an alternative to XML. file. 

The Style Book provides a comprehensive overview of your site’s colors, typography, and block styles in an organized layout. Each block example and style group is labeled, making it easy to preview and understand your theme’s current design settings. Think of it as if your theme threw a party, and all the design elements showed up wearing name tags. 😀

For classic themes that support the Style Book, site patterns have been relocated to Appearance > Design > Patterns, consolidating all design-related functionality from the Site Editor into one place. Previously, patterns were listed under Appearance > Patterns

Testing is an important step for this feature before it’s introduced to WordPress CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress.. If you have the time, please help identify potential issues, and suggest areas for improvement by logging your feedback on GitHubGitHub GitHub is a website that offers online implementation of git repositories that can easily be shared, copied and modified by other developers. Public repositories are free to host, private repositories require a paid subscription. GitHub introduced the concept of the ‘pull request’ where code changes done in branches by contributors can be reviewed and discussed before being merged be the repository owner. https://github.com/. Testing instructions can be found on the original PR. Thank you!

Introducing the Query Total block

You know how many results are in your queries, but do your site’s readers? The new Query Total block is here to help.

When added within a Query LoopLoop The Loop is PHP code used by WordPress to display posts. Using The Loop, WordPress processes each post to be displayed on the current page, and formats it according to how it matches specified criteria within The Loop tags. Any HTML or PHP code in the Loop will be processed on each post. https://codex.wordpress.org/The_Loop. block, the Query Total block displays the number of results the query has returned, or, alternatively, the current range in a set of paginated results.

More Highlights

Gutenberg 19.9 introduces phpMyAdmin to wp-env as a launch option. phpMyAdmin will automatically connect to the running mysqlMySQL MySQL is a relational database management system. A database is a structured collection of data where content, configuration and other options are stored. https://www.mysql.com/. database service, allowing you to inspect and manage the local WordPress database as you develop. (#67588).

Featured imageFeatured image A featured image is the main image used on your blog archive page and is pulled when the post or page is shared on social media. The image can be used to display in widget areas on your site or in a summary list of posts. backgrounds in the Cover block now come with resolution controls so that you can change their sizes (#67273). 

Reset colors for blocks and global styles in the editor with a single click thanks to the inline reset button added to all color controls (#67116).

Looking to replace your Query block’s design? Query block patterns have been relocated from a modal to a dropdown. It’s still in the block toolbar, now under “Change design” (#66993).

You can now also set your site’s home page from within the Site Editor via the page actions menu (#65426). This is the equivalent of updating the Reading Settings in “Settings > Reading”. Under “Pages” in the editor, find the page you’d like to set as your homepage, click on the action menu, and select ‘Set as homepage’.

Changelog

Enhancements

  • Feature: Add navigation.isLoading state to core/router store. (67680)
  • Update the title, description, and order of Experiments page. (67762)
  • wp-env: Add phpMyAdmin support. (67588)

Components

  • Added enableAlpha prop to CustomGradientPicker and GradientPicker components. (66974)
  • BorderBoxControl: Reduce gap value when unlinked. (67049)
  • DateTime: Add default date/time to stories. (67678)
  • Deprecate COLORS.white. (67649)
  • Disabled: Suppress contentEditable warning in story. (67679)
  • Document layout in Storybook. (67628)
  • DropdownMenu: Increase option height to 40px. (67435)
  • DuotonePicker: Simplify Button styles. (66641)
  • Menu: Throw when subcomponents are not rendered inside top level Menu. (67411)
  • Popover: Use anchor instead of anchorRef in story. (67674)
  • Storybook: Remove unnecessary feature flags. (67576)
  • Storybook: Update ArgsTable to Controls in preview. (67582)
  • Storybook: Update control types from null to undefined. (67581)
  • Storybook: Use manager-api instead of addons package. (67578)
  • Update @ariakit/reactReact React is a JavaScript library that makes it easy to reason about, construct, and maintain stateless and stateful user interfaces. https://reactjs.org/. to 0.4.13. (65907)
  • Update @ariakit/react to 0.4.15 and @ariakit/test to 0.4.7. (67404)

Block Library

  • Cover Block: Image size option for featured image. (67273)
  • Feature: Allow Post Template block to get deeply nested within Query Block. (67657)
  • Image Block: Change how the Image’s overlay styles are applied. (67788)
  • Navigation: Enable all non-interactive formats. (67585)
  • Query block: Move patterns modal to dropdown on block toolbar. (66993)
  • Separator block: Allow divs to be used as separators. (67530)
  • New Block: Add Query Total block for displaying total query results or ranges. (67629)
  • Block Library: Update the relationship of No results block to ancestor. (48348)

DataViews

  • Add headerHeader The header of your site is typically the first thing people will experience. The masthead or header art located across the top of your page is part of the look and feel of your website. It can influence a visitor’s opinion about your content and you/ your organization’s brand. It may also look different on different screen sizes. to the quick edit when bulk editing. (67390)
  • Data views: Expand configuration drop down on mobile. (67715)
  • Quick Edit: Add Template field. (66591)
  • Refactor actions to render modal outside of the menu. (67664)
  • Renders DataForm component only when data has been fetched. (67694)
  • Unify layout configuration. (67477)
  • Update bulk header with actions. (67743)

Style Book

  • Add stylebook screen for classic themes. (66851)
  • Scroll to top at styles root. (67605)
  • Stylebook: Render overview colors in 4 columns. (67597)
  • Update style book headings to new design. (67546)

Post Editor

  • Inline Commenting: Added new sidebarSidebar A sidebar in WordPress is referred to a widget-ready area used by WordPress themes to display information that is not a part of the main content. It is not always a vertical column on the side. It can be a horizontal rectangle below or above the content area, footer, header, or any where in the theme. as extension of the canvas. (67347)
  • Inline Commenting: Re-order the comments in sidebar in which blocks are listed. (66927)
  • Inline commenting: UXUX User experience Enhancements for Comments. (67385)

Site Editor

  • Data Views: Add action for pages to set site homepage. (65426)
  • Sidebar: Update appearance of active items. (67318)
  • Style the selected template pattern. (65917)

Data Layer

  • Data: Expose ‘useSelect’ warning to third-party consumers. (67735)
  • Data: Include more details when shallow equality fails in ‘useSelect’. (67713)

Global Styles

  • Controls in grid should match between sidebar panel and editor. (67602)
  • Shadows: Improve design and a11yAccessibility Accessibility (commonly shortened to a11y) refers to the design of products, devices, services, or environments for people with disabilities. The concept of accessible design ensures both “direct access” (i.e. unassisted) and “indirect access” meaning compatibility with a person’s assistive technology (for example, computer screen readers). (https://en.wikipedia.org/wiki/Accessibility) of remove button. (67705)

Block Editor

  • Prefer exact matches in Link Search results sorting. (67367)
  • Try direct drag (outside text editable). (67305)

Zoom Out

  • Keep only copy, duplicate and delete in the zoom out more block toolbar menu item. (67279)

Font Library

  • FontCollection: Update pagination controls. (67143)

Colors

  • Add reset button to color control. (67116)

Bug Fixes

  • Exclude Set instance methods from polyfills. (67230)
  • Preload: Fix settings fields order. (67450)
  • Scripts: Make React Fast Refresh work with multiple blocks. (64924)
  • WP Scripts: Update webpack dependencies related to styling. (67572)

Site Editor

  • Allow access to quick edit. (67469)
  • Edit Site: Fix sidebar template author navigation. (67382)
  • Fix Site editor navigation menuNavigation Menu A theme feature introduced with Version 3.0. WordPress includes an easy to use mechanism for giving various control options to get users to click from one place to another on a site. items alignment visual regressionregression A software bug that breaks or degrades something that previously worked. Regressions are often treated as critical bugs or blockers. Recent regressions may be given higher priorities. A "3.6 regression" would be a bug in 3.6 that worked as intended in 3.5.. (67321)
  • Fix sidebar item animation regression. (67771)
  • Fix sidebar plugins. (67557)
  • Fix the templates route on mobile. (67547)
  • Fix: Fixed site-editor crashing when added front-page template and clicking more option. (67500)
  • Fix: Fixed styling tab not opening on themes without style variations on mobile & desktop. (67537)
  • Preload: Parse post ID from p (path). (67465)
  • Remove default page slug. (67673)
  • Router: Fix addition and removal of empty classnames. (67378)
  • Wrap each router area in ‘ErrorBoundary’. (64245)
  • useEditorTitle: Fix wrong request without ID. (67475)

Block Editor

  • Animate useScaleCanvas() only when toggling zoomed out mode. (67481)
  • Drag and drop: Fix drop zones on block drag. (67317)
  • Drag and drop: Fix firefox compat logic. (67439)
  • Fix JSJS JavaScript, a web scripting language typically executed in the browser. Often used for advanced user interfaces and behaviors. error in the ‘useTabNav’ hook. (67102)
  • FontFamilyControl: Restore margin bottom. (67424)
  • Inserter: Hide child blocks from the inserter when needed. (67734)
  • Inserter: Patterns: Remove loading indicator. (67072)
  • Inserter: Should receive focus on open. (67754)
  • Remove words count in the multi-selection inspector. (67624)
  • Storybook: Fix BlockPatternsList fixtures. (67672)
  • Drag and drop: Fix misplaced drop indicator. (67434)
  • Drag and drop: Fix scroll disorientation after drop. (67405)
  • Drag and drop: Restore moving animation. (67417)

Block Library

  • Align Submenu block and Nav Link block by including description and wrapping span. (67198)
  • CommentsPagination: Set font-size to inherit for pagination items. (67296)
  • Fix latest post block spacing issue. (66442)
  • Fix: Caption with Link in Wide-Width and Full-Width Images Appears on two lines. (67392)
  • Fix: Don’t show aria-label when its value is empty. (67381)
  • Navigation Block: Fix issue with double-clicking “Create a new menu” causing duplicate menus. (67488)
  • Pullquote block having design issue when text-decoration is choosen strikethrough. (66707)
  • Remove inline-block display from image anchor in style.scss. (67368)
  • Search block: Add space between attributes when using “Button only” option. (61399)
  • Updated ‘Set featured image’ text in dropdown. (67775)

DataViews

  • Avoid double click handler on primary fields. (67393)
  • Better handling of missing onClickItem prop. (67402)
  • Fix filters lost when switching layouts. (67740)
  • Fix hidden List layout actions dropdown. (67778)
  • Fix reordering fields in list and grid layouts. (67777)
  • Fix: Duplicate template part refers to original name instead of duplicated name. (67329)
  • Preserve filters when switching layouts in templates dataviews. (67744)
  • QuickEdit: Prevent site-editor from crashing when slug is not an object. (67577)
  • Site Editor: Fix featured image not appearing in pages dataviews. (67562)

Components

  • CustomSelectControl: Update Value from Fresh State. (67733)
  • Fix the ‘ClipboardButton’ effect cleanup. (67399)
  • Navigation: Fix active item hover color. (67732)
  • Scrollable: Fix story by declaring field as readonly. (67683)
  • Storybook: Fix control types. (67646)
  • Storybook: Fix storybook blocks imports. (67684)
  • Storybook: Fix table markup in Design Language – Radius documentation. (67686)
  • Theme: Fix contrast in nested story. (67681)

Post Editor

  • Fix MetaMeta Meta is a term that refers to the inside workings of a group. For us, this is the team that works on internal WordPress sites like WordCamp Central and Make WordPress. boxes saving when they’re not present. (67254)
  • Fix hiding and showing of meta boxes. (67504)
  • Fix: Header layout spacing in Firefox. (67074)
  • Make sure Document Bar doesn’t go missing. (67322)
  • Update pre-publish panel wording to accurately describe the review process. (67328)

Zoom Out

  • Fix for inserter. (67495)
  • Fix useZoomOut inserter behavior. (67591)
  • Fix zoom animation scrollbar. (67536)
  • UseScaleCanvas performance improvements. (67496)

Write mode

  • Fix color of disabled buttons in dark toolbar. (67348)
  • Fix synced pattern editing in write mode and refactor block editing mode to reducer. (67026)
  • Fix: Remove parent block selector while in Write mode. (67395)
  • Fix: Write Mode mode persists as enabled in widgetWidget A WordPress Widget is a small block that performs a specific function. You can add these widgets in sidebars also known as widget-ready areas on your web page. WordPress widgets were originally created to provide a simple and easy-to-use way of giving design and structure control of the WordPress theme to the user. editor. (67587)

Global Styles

  • Edit site: Remove empty preview border and redirect to editor in global styles navigation. (67548)
  • Fix: Styles section does not moves stylebook to typography. (67423)
  • Global Styles Preview: Don’t use iframeiframe iFrame is an acronym for an inline frame. An iFrame is used inside a webpage to load another HTML document and render it. This HTML document may also contain JavaScript and/or CSS which is loaded at the time when iframe tag is parsed by the user’s browser. component. (67682)

Style Book

  • Fix critical error when blocks are not registered. (67703)

Design Tools

  • Global Styles: Fix handling of booleans when stabilizing block supports. (67552)

Block bindings

  • Revert “Extensibility: Make Block Bindings work with editor.BlockEdit hook”. (67516)

Patterns

  • Site Editor: Fix the patterns route on mobile. (67467)

Focus Mode

  • Site Editor: Fix focus mode navigation. (67458)

List View

  • Fix List View not updating when switching editor modes. (67379)

Extensibility

  • Make Block Bindings work with editor.BlockEdit hook. (67370)

Synced Patterns

  • Remove use of contentOnly block editing mode for synced patterns. (67364)

Widgets Editor

  • Block Bindings: Remove client core sources registration in widgets. (67349)

REST APIREST API The REST API is an acronym for the RESTful Application Program Interface (API) that uses HTTP requests to GET, PUT, POST and DELETE data. It is how the front end of an application (think “phone app” or “website”) can communicate with the data store (think “database” or “file system”) https://developer.wordpress.org/rest-api/.

  • Support search_columns argument in the user endpoint. (67330)

AccessibilityAccessibility Accessibility (commonly shortened to a11y) refers to the design of products, devices, services, or environments for people with disabilities. The concept of accessible design ensures both “direct access” (i.e. unassisted) and “indirect access” meaning compatibility with a person’s assistive technology (for example, computer screen readers). (https://en.wikipedia.org/wiki/Accessibility)

  • [Dataviews] Fix: Space does not triggers the media button on grid view. (67791)

Block Editor

  • BlockSwitcher: Refactor to use Button layout properly. (67502)
  • Remove one occurrence of incorrect usage of ItemGroup. (67427)

DataViews

  • [a11y] Fix: Media button on the page view grid does not have an accessible name. (67690)

Components

  • Fix incorrect usage of ItemGroup in the Image block filters panel. (67513)

Post Editor

  • Fix EntitiesSavedStates panel dialog props. (67351)

Performance

  • Fix re-renders caused by getEntityRecordsPermissions after #67667. (67770)
  • Preload: Fix end-to-end test. (67497)
  • Site Editor: Pages: Preload template lookup. (66654)
  • [mini] Preload: Add post type. (67518)

Experiments

  • Move duplicateTemplatePart action to the @wordpress/fields package. (65390)

Documentation

  • Button: Revise documentation. (66617)
  • Docs: Fix Playwright Page Object Model link. (67652)
  • Docs: Include the strategy for setting engines for WordPress packages. (67727)
  • Docs: Remove invalidinvalid A resolution on the bug tracker (and generally common in software development, sometimes also notabug) that indicates the ticket is not a bug, is a support request, or is generally invalid. key projects links on the documentation. (67491)
  • Improve documentation for fields package. (67580)
  • Refine getServerState() & getServerContext() documentation. (67499)
  • Storybook: Add WritingModeControl story. (67343)
  • Storybook: Add stories for AlignmentToolbar and AlignmentControl components. (67046)
  • Storybook: Add stories for HeadingLevelDropdown component. (67294)
  • Storybook: Revert “Preview: ArgsTable => Controls (#67582)”. (67656)
  • Storybook: Support keyword search in Icon Library. (67442)
  • Switch Several Links to httpsHTTPS HTTPS is an acronym for Hyper Text Transfer Protocol Secure. HTTPS is the secure version of HTTP, the protocol over which data is sent between your browser and the website that you are connected to. The 'S' at the end of HTTPS stands for 'Secure'. It means all communications between your browser and the website are encrypted. This is especially helpful for protecting sensitive data like banking information. in Document Files. (67706)
  • Update README.md. (67711)
  • Update extending-the-query-loop-block.md. (67529)
  • Update global stylesheet docblocks with custom-css parameter. (67716)
  • Updated old URLURL A specific web address of a website or web page on the Internet, such as a website’s URL www.wordpress.org in Documentation. (67446)

Code Quality

  • Convert lock unlock to generics. (66682)
  • CreateTemplatePartModal: Avoid identity warning in useSelect. (67786)
  • CreateTemplatePartModal: Replace ts-ignore with ts-expect-error. (67709)
  • Fix misc type compilation errors in editor and block editor packages. (67410)
  • Fix: Invalid JSDoc for optional string parameter and return value. (67489)
  • Fix: Remove unused test code on tools panel. (67589)
  • Removed trailing space in “Color randomizer “. (67457)
  • Update misc types and revert WPCompleter export from components. (67599)

Components

  • BoxControl: Deprecate 36px default size. (66704)
  • BoxControl: Passive deprecate onMouseOver/onMouseOut. (67332)
  • BoxControl: Refactor and unify the different sides implementation. (67626)
  • CustomSelectControl: Deprecate 36px default size. (67441)
  • FormFileUpload: Deprecate 36px default size. (67438)
  • FormTokenField: Deprecate 36px default size. (67454)
  • NumberControl: Deprecate 36px default size. (66730)
  • RangeControl: Update the default marks styles to match the padding/margin control. (67611)
  • Remove __unstableMotionContext from @wordpress/components. (67623)
  • SlotFill: Remove explicit rerender from portal version. (67471)
  • Tabs: Overhaul unit tests. (66140)
  • ToolbarButton: Set size to “compact”. (67440)
  • UnitControl : Deprecate 36px default size. (66791)

Block Editor

  • Group ‘onRemove’ callback with other public APIs. (67551)
  • InspectorControlsSlot: Remove unused framer motion context forwarding. (67522)
  • LetteringSpacingControl: Deprecate 36px default size. (67429)
  • Reduce the ‘isZoomOut’ selector calls in the block toolbar. (67594)
  • Remove ‘React.Children’ legacy APIAPI An API or Application Programming Interface is a software intermediary that allows programs to interact with each other and share data in limited, clearly defined ways. in ‘Warning’ component. (67675)
  • Replace remaining custom deep cloning with ‘structuredClone’. (67707)
  • Stabilize LinkControl Component. (56384)

Site Editor

  • Remove .components-item-group selector in edit-site components[2]. (67575)
  • Site Editor Sidebar: Remove hasGlobalStyleVariations condition for the Styles nav item. (67545)
  • Unify layout with posts dataviews. (67162)
  • Use path based routing instead of query args and site-editor.php routes. (67199)

Post Editor

  • Editor: Refactor ‘PostPublishPanelPostpublish’ to function component. (67398)
  • Editor: Use hooksHooks In WordPress theme and development, hooks are functions that can be applied to an action or a Filter in WordPress. Actions are functions performed when a certain event occurs in WordPress. Filters allow you to modify certain functions. Arguments used to hook both filters and actions look the same. instead of HOC in ‘PostPublishButtonOrToggle’. (67413)
  • Remove PostSlugCheck and PostSlug unused components. (67414)

DataViews

  • Create a single component for rendering the actions list. (67558)
  • Fix: Dataviews remove primary field concept from some classes. (67689)

Data Layer

  • TypeScript: Convert factory utils in data package to TS. (67667)

Shortcodes

  • Add types for shortcodeShortcode A shortcode is a placeholder used within a WordPress post, page, or widget to insert a form or function generated by a plugin in a specific location on your site. package. (67416)

Block bindings

  • Remove fallback for context.postType in post meta. (67345)

Block hooks

  • Navigation block: Remove more obsolete Block Hooks helpers. (67193)

Tools

  • PR template: Add before/after table. (62739)

Build Tooling

  • Build: Stop generating unused legacy scripts for core blocks. (65268)
  • CI: Skip native jobs. (67799)
  • DataViews build-wp: Don’t bundle singleton WordPress packages. (67590)
  • DataViews build-wp: Don’t bundle the date package. (67612)
  • Keycodes: Improve tree shaking by annotating exports as pure. (67615)
  • Upgrade TypeScript to 5.7 and fix types. (67461)
  • Combine the release steps to ensure that releases are tagged. (65591)

Testing

  • e2e-test-utils-playwright: Increase timeout of site-editor selector. (66672)

Security

npm Packages

  • Update npm dependencies to fix issues reported by audit. (67708)

Various

Extensibility

  • Add ability to show drop cap setting in paragraph block by default. (45994)
  • DataViews: Move template and pattern title fields. (67449)
  • DataViews: Update usePostFields to accept postType. (67380)

PluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party

  • Only override REST server for older WP versions. (67779)

NUX

  • Welcome guide headline update. (67654)

Block Locking

  • Simplify description and option names in the Lock modal dialog. (67437)

First-time contributors

A colossal kudos to all the first-time contributors who submitted the following PRs:

Contributors

Finally, thanks to everyone who gave their time, code, reviews and ideas to Gutenberg 19.9:

@aaronrobertshaw @afercia @ajlende @akasunil @AKSHAT2802 @benazeer-ben @benniledl @carolinan @cbravobernal @desrosj @dhruvang21 @dougwollison @ellatrix @getdave @gigitux @gziolo @hbhalodia @himanshupathak95 @Infinite-Null @jeryj @jsnajdr @juanfra @louwie17 @Mamaduka @manzoorwanijk @matiasbenedetto @mcsf @michalczaplinski @miminari @mirka @ndiego @ntsekouras @oandregal @ockham @PARTHVATALIYA @ramonjd @SainathPoojary @SantosGuillamot @sarthaknagoshe2002 @snehapatil2001 @Soean @Sukhendu2002 @t-hamano @talldan @tellthemachines @TylerB24890 @tyxla @up1512001 @vipul0425 @yogeshbhutkar @youknowriad

See you next year for Gutenberg 20.0! 🎉

Thanks to @annezazu, @bernhard-reiter, @joen, @isabel_brison and @ndiego who helped with this release.

#block-editor, #core-editor, #gutenberg, #gutenberg-new