{"id":20823,"date":"2019-05-14T11:30:13","date_gmt":"2019-05-14T11:30:13","guid":{"rendered":"https:\/\/www.heartinternet.uk\/blog\/?p=20823"},"modified":"2019-05-14T11:30:13","modified_gmt":"2019-05-14T11:30:13","slug":"what-does-gutenberg-ready-mean-for-wordpress-themes","status":"publish","type":"post","link":"https:\/\/www.heartinternet.uk\/blog\/what-does-gutenberg-ready-mean-for-wordpress-themes\/","title":{"rendered":"What does \u2018Gutenberg-ready\u2019 mean for WordPress themes?"},"content":{"rendered":"<p>The theory is: Gutenberg, the new block editor, works with any WordPress theme out of the box. It only changes the editing experience but not how content is stored and then rendered on the front-end by the theme.<\/p>\n<p>Mind you, if you use a third-party page-builder like <a href=\"https:\/\/www.wpbeaverbuilder.com\">Beaver Builder<\/a>, <a href=\"https:\/\/www.elegantthemes.com\/gallery\/divi\/\">Divi<\/a>,<a href=\"https:\/\/elementor.com\/\"> Elementor<\/a>, or <a href=\"https:\/\/wpbakery.com\/\">WPBakery<\/a> to name a few, coupled with a theme, you will have to connect with the page builders\u2019 developers and inquire about their Gutenberg-readiness. While the block editor has been the default editor for the last three months, I have seen some major adjustments for a co-existence between third-party page builders and Core\u2019s Classic and Block editors.<\/p>\n<p>There are also a few very popular themes in the Themeforest Marketplace (for example <a href=\"https:\/\/themeforest.net\/item\/avada-responsive-multipurpose-theme\/2833226?s_rank=1\">Avada<\/a> and <a href=\"https:\/\/themeforest.net\/item\/enfold-responsive-multipurpose-theme\/4519990?s_rank=1\">Enfold<\/a>) that have their own proprietary methods of creating and storing content. Their developers mostly suggest to install the Classic Editor plugin to make their themes work again with a WordPress 5.x version.<\/p>\n<p>How long will the Classic Editor be around? The Core Team <a href=\"https:\/\/make.wordpress.org\/core\/2018\/11\/07\/classic-editor-plugin-support-window\/\">published the \u201cguaranteed supported until date\u201d as 31 December 2021<\/a> (so roughly another two and a half years) .<\/p>\n<p>Beyond these two caveats, third-party page builders and content lock-in theme architecture, it should work out of the box.<\/p>\n<h3>Baseline support, enhancements, extend and customise<\/h3>\n<p><em>\u201cThe new Blocks include baseline support in all themes, enhancements to opt-in to and the ability to extend and customize.\u201d <\/em><\/p>\n<p>That\u2019s how the developer handbook for the block editor starts its <a href=\"https:\/\/wordpress.org\/gutenberg\/handbook\/designers-developers\/developers\/themes\/theme-support\/\">Theme Support chapter.<\/a><\/p>\n<p>In other words, there are a few features the block editor offers, that might not be available yet for your theme and your site, so it\u2019s not pure binary, works or doesn\u2019t work. There are multiple levels of Gutenberg-readiness.<\/p>\n<p>It goes from enabling Align-wide and Align-full styling for the various blocks (columns, images, cover, gallery), to include styling for each core block to providing custom colour and font-size pickers for your customers content creators, so they stay within the brands boundaries.<\/p>\n<p>In this article, I\u2019ll talk about all these different ways your theme can interact with the block editor. We\u2019ll talk about stylesheets, CSS specificity and layout. There are voices, and mine is among them, that building blocks are the domains of plugins. Themes provide the glue between features and front-end, and a site owner should be able to switch out their theme without losing content or composition. Of course, like everything else in life, the edges are blurry and the block editor is still in its infancy.<\/p>\n<p>Here is what we\u2019re going to look at:<\/p>\n<ul>\n<li>Block styles<\/li>\n<li>Align-wide and align-full<\/li>\n<li>Custom colour palettes<\/li>\n<li>Block font sizes<\/li>\n<\/ul>\n<p>Let\u2019s take it from the top:<\/p>\n<h3>Block styles<\/h3>\n<p>Some of the block out-of-the box styling might be a little bit awkward with your particular theme. \u00a0We have seen sometimes a bit of an overlap in two-column displays, when images or video embeds bleed into the sidebar or overlap with other blocks or elements on your site.<\/p>\n<p>You might want to ask your theme developer to add some styling for Gutenberg blocks and make sure that the styles are also available for the editor, as the ambition of Gutenberg is true WYSIWYG (what you see is what you get) editing, and the view in the editor is as close as possible to the final product.<\/p>\n<div style=\"width: 640px;\" class=\"wp-video\"><video class=\"wp-video-shortcode\" id=\"video-20823-1\" width=\"640\" height=\"360\" preload=\"metadata\" controls=\"controls\"><source type=\"video\/mp4\" src=\"https:\/\/wp4good.org\/wp-content\/uploads\/2018\/06\/Blocks-for-Theme-Test-Twenty-Sixteen.mp4?_=1\" \/><a href=\"https:\/\/wp4good.org\/wp-content\/uploads\/2018\/06\/Blocks-for-Theme-Test-Twenty-Sixteen.mp4\">https:\/\/wp4good.org\/wp-content\/uploads\/2018\/06\/Blocks-for-Theme-Test-Twenty-Sixteen.mp4<\/a><\/video><\/div>\n<p>The video above shows the view of the core blocks in the Twenty-Fifteen theme.<\/p>\n<p>We started out with a lot of core blocks in a post and saved it as a text file. Now for every site we tested we created a new staging site and then created the new post via the Code Editor using <a href=\"https:\/\/gist.github.com\/bph\/335ddef358bb41efdcd159cbc76f582e\">this example post with embeds, buttons, and images in various forms. \u00a0<\/a><\/p>\n<p>Then we published\/previewed the post and made a list of which blocks needed further styling within the existing theme.<\/p>\n<p><iframe loading=\"lazy\" src=\"https:\/\/www.youtube.com\/embed\/JxzGu5a0YQI\" width=\"550\" height=\"315\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/p>\n<p>By default, blocks are styled in the editor. However, not all block styles are displayed on the front-end. If you\u2019d like to have them displayed there as well, you need to add the theme support in your <code>functions.php<\/code>.<\/p>\n<p>In the release notes for Gutenberg version 3.0, Mathias Ventura wrote:<\/p>\n<p><em>\u201cDuring the whole process of Gutenberg, we have come to the realization that in order to have the most flexible system for styling within themes \u2014 and letting us get closer to visual parity between front-end and the editor \u2014 we had to separate presentational styles from structural styles when it comes to individual blocks. <\/em><\/p>\n<p><em>So far, we have not been loading presentational styles on the front-end in order to avoid unintentional changes to site\u2019s appearance, but that also causes issues for new themes that would like to start working from the visual design baseline that Gutenberg offers by default as shown on the admin side.\u201d<\/em><\/p>\n<h3>add_theme_support( &#8216;wp-block-styles&#8217; )<\/h3>\n<p>Ventura continues:<\/p>\n<p><em>\u201cThe decision has been made to allow themes to opt-in to these styles with an <\/em><code>add_theme_support( 'wp-block-styles' )<\/code> <em>registration. This will allow us to keep (or reintroduce) some more opinionated styles for elements like Quotes, Tables, the Separator, and so on.\u201d<\/em><\/p>\n<h3>Align-wide and align-full<\/h3>\n<p>Quite a few blocks can change their place within the content section of your theme, with two stylings: <code>.alignfull<\/code> and <code>.alignwide<\/code><em>.<\/em><\/p>\n<p align=\"center\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-20824\" src=\"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/gutenberg-align-wide-align-full-e1556095302763.gif\" alt=\"\" width=\"650\" height=\"465\" \/><\/p>\n<p>Both are considered \u201copt-in\u201d features. If a theme developer wants to make them available to their content creators, they need to be declared in the <code>functions.php<\/code> and then add styles for the standard class names.<\/p>\n<p>In the <code>functions.php<\/code>:<\/p>\n<pre><code>\/\/Add support for align-wide and align-full\nadd_theme_support( 'align-wide' );<\/code><\/pre>\n<p>This makes the additional available buttons visible in the block editor.<\/p>\n<p>Default is aligned within the content:<\/p>\n<ul>\n<li><code>.alignwide<\/code> is larger than the normal content on the page.<\/li>\n<li><code>.alignfull<\/code> expands the block over the full page width in the browser.<\/li>\n<\/ul>\n<p>In your style.css you can then add the styles for <code>.alignwide<\/code> and <code>.alignfull<\/code>:<\/p>\n<pre><code>.entry-content &gt; .alignwide {\n\tMax-width: 1100px;\n}\n\n.entry-content &gt; .alignfull {\n\tmargin: 1.5em 0;\n\tMax-width: 100%;\n}<\/code><\/pre>\n<p>(This example code has been taken from the <a href=\"https:\/\/github.com\/WordPress\/gutenberg-starter-theme\">Gutenberg Starter Theme<\/a> on GitHub.)<\/p>\n<p>You could also use the <a href=\"https:\/\/www.smashingmagazine.com\/2015\/12\/getting-started-css-calc-techniques\/\">CSS calc()<\/a> function to dynamically style the blocks for alignfull and alignwide, relative to the size of the browser window and dependent on the viewport of the device.<\/p>\n<ul>\n<li>Bill Erickson has some <a href=\"https:\/\/www.billerickson.net\/full-and-wide-alignment-in-gutenberg\/\">detailed instructions for you in his February post.<\/a><\/li>\n<li>Kjell Reigstad used <a href=\"https:\/\/github.com\/WordPress\/twentynineteen\/blob\/master\/sass\/blocks\/_blocks.scss\">SASS for the Twenty-Nineteen theme: <\/a><\/li>\n<\/ul>\n<p>It will get tricky when you deal with a design that has more than one column layout, and you want to still offer the two align styles.<\/p>\n<p>Oliver Johas has a more <a href=\"https:\/\/codepen.io\/webmandesign\/post\/gutenberg-full-width-alignment-in-wordpress-themes\">elaborate tutorial available for you at CodePen:<\/a><\/p>\n<h3>Custom colour palettes<\/h3>\n<p>The next level of Gutenberg \u2018readiness\u2019 could come in the shape of theme-specific colour palettes.<\/p>\n<p>The button, the paragraph and the quote blocks offer background and text colour choices to the \u00a0content creator.<\/p>\n<p align=\"center\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-20827\" src=\"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/gutenburg-colour-palettes-example-1.png\" alt=\"An example of the colour palette options available in gutenberg\" width=\"494\" height=\"530\" \/><\/p>\n<p align=\"center\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-20828\" src=\"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/gutenburg-colour-palettes-example-2.png\" alt=\"An example of the colour palette options available in gutenberg\" width=\"650\" height=\"274\" \/><\/p>\n<p>We can easily imagine that a content creator might get carried away and branding standards might go out the window. Before you break out in hives, imagining a throwback to Myspace and GeoCities times with user-styled content, rest easy.<\/p>\n<p>The theme developer can give the content creators a little bit more freedom and flexibility in providing standard colour palettes with their theme and still keep standards intact.<\/p>\n<p>The colour pickers appear in the sidebar of the block editor.<\/p>\n<p align=\"center\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-20831\" src=\"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/gutenberg-colour-pickers-example-1.png\" alt=\"The colour picker in use for the Twenty-Fifteen theme\" width=\"650\" height=\"238\" \/><br \/><small>The colour picker in use for the Twenty-Fifteen theme<\/small><\/p>\n<p align=\"center\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-20832\" src=\"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/gutenberg-colour-pickers-example-2-e1556095790851.png\" alt=\"The colour picker in use for the Twenty-Nineteen theme\" width=\"650\" height=\"243\" \/><br \/><small>The colour picker in use for the Twenty-Nineteen theme<\/small><\/p>\n<p>It\u2019s a three-step implementation process:<\/p>\n<p><strong>Step 1: <\/strong>Register your colours in your <code>functions.php<\/code> as an array of arrays.<\/p>\n<pre><code>\/\/ Add support for custom color scheme.\n        add_theme_support( 'editor-color-palette', array(\n            array(\n                'name'  =&gt; __( 'Strong Blue', 'gutenbergtheme' ),\n                'slug'  =&gt; 'strong-blue',\n                'color' =&gt; '#0073aa',\n            ),\n            array(\n                'name'  =&gt; __( 'Lighter Blue', 'gutenbergtheme' ),\n                'slug'  =&gt; 'lighter-blue',\n                'color' =&gt; '#229fd8',\n            ),\n            array(\n                'name'  =&gt; __( 'Very Light Gray', 'gutenbergtheme' ),\n                'slug'  =&gt; 'very-light-gray',\n                'color' =&gt; '#eee',\n            ),\n            array(\n                'name'  =&gt; __( 'Very Dark Gray', 'gutenbergtheme' ),\n                'slug'  =&gt; 'very-dark-gray',\n                'color' =&gt; '#444',\n            ),\n        ) );<\/code><\/pre>\n<p><em>Side note:<\/em><code>'__( )'<\/code><em>\u00a0is the syntax for translatable strings in the WordPress world, together with the <\/em><code>'gutenbergtheme'<\/code><em> namespace. \u00a0<\/em><\/p>\n<p><em>If it doesn\u2019t work with your theme, you need to add the following string to your<\/em> <code>functions.php<\/code><em>:<\/em><\/p>\n<p><code>load_theme_textdomain( 'gutenbergtheme', get_template_directory() . '\/languages' );<\/code><\/p>\n<p><em>If your theme isn\u2019t for translation, you can also use<\/em> <code>\u2018name\u2019 =&gt; \u2018Very Dark Gray\u2019<\/code><em>.<\/em><\/p>\n<p>The attributes are name, slug and colour:<\/p>\n<ul>\n<li>The name is used for the hover text when your user moves their mouse.<\/li>\n<li>The slug is used to identify it in the class name attached to the block. That\u2019s where your stylesheet connects.<\/li>\n<li>And the colour representation in hex value, so they are displayed correctly in the Block options.<\/li>\n<\/ul>\n<p>The colours will be shown in order on the palette, and there\u2019s no limit to how many can be specified.<\/p>\n<p align=\"center\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-20834\" src=\"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/gutenberg-colour-pickers-example-3-e1556095917387.png\" alt=\"An example of custom colour pickers in gutenberg\" width=\"650\" height=\"309\" \/><\/p>\n<p><strong>Step 2:<\/strong> Assign class names to the blocks when the content creator assigns the colours to the block.<\/p>\n<p>Let\u2019s take a look at the output of the block on the front-end.<\/p>\n<p align=\"center\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-20837\" src=\"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/gutenberg-colour-pickers-front-end-output-e1556096042113.png\" alt=\"Showing how the colour pickers are used in the front end of a site\" width=\"650\" height=\"233\" \/><\/p>\n<p>The first section was given the \u201cStrong Blue\u201d background and a \u201cLight Gray\u201d text.<\/p>\n<p>And you see that the class attribute for the <code>&lt;p&gt;<\/code> tag contains two selectors regarding the<strong> background<\/strong> and the<strong> text.<\/strong><\/p>\n<ul>\n<li><strong>has-background <\/strong>and <strong>has-<\/strong><strong>strong-blue<\/strong><strong>-background-color<\/strong><\/li>\n<li><strong>has-text-color <\/strong>and <strong>has-<\/strong><strong>very-light-gray<\/strong><strong>-color<\/strong><\/li>\n<\/ul>\n<p>These class names have been assigned automatically to those paragraphs, using the slug attributes from your colour palette array.<\/p>\n<pre><code>array(\n\t\u2018name\u2019 =&gt; __( \u2018Strong Blue\u2019, \u2018gutenbergtheme\u2019 ),\n\t\u2018slug\u2019 =&gt; \u2018strong-blue\u2019,\n\t\u2018color\u2019 =&gt; \u2018#0073aa\u2019,\n),\narray (\n\t\u2018name\u2019  =&gt; __ ( \u2018Very Light Gray\u2019, \u2018gutenbergtheme\u2019 ),\n\t\u2018slug\u2019  =&gt; \u2018very-light-gray\u2019,\n\t\u2018color\u2019 =&gt; \u2018#eee\u2019,\n),<\/code><\/pre>\n<p><strong>Step 3: <\/strong>List the styles with their assigned class names in your stylesheet.<\/p>\n<p>Two for each colour in your colour palette, one for the text and one for the background, adding \u201chas\u201d and color or background-color to the class names:<\/p>\n<pre><code>.has-strong-blue-color {\n color: #0073aa;\n}\n\n.has-strong-blue-background-color {\n background-color: #0073aa;\n}<\/code><\/pre>\n<p>Here is the full list of colours for your custom palettes from the block.css file of the <a href=\"https:\/\/github.com\/WordPress\/gutenberg-starter-theme\">Gutenberg Starter Theme<\/a>.<\/p>\n<pre><code>\/*--------------------------------------------------------------\n# Block Color Palette Colors\n--------------------------------------------------------------*\/\n.has-strong-blue-color {\n color: #0073aa;\n}\n\n.has-strong-blue-background-color {\n background-color: #0073aa;\n}\n\n.has-lighter-blue-color {\n color: #229fd8;\n}\n\n.has-lighter-blue-background-color {\n background-color: #229fd8;\n}\n\n.has-very-light-gray-color {\n color: #eee;\n}\n\n.has-very-light-gray-background-color {\n background-color: #eee;\n}\n\n.has-very-dark-gray-color {\n color: #444;\n}\n\n.has-very-dark-gray-background-color {\n background-color: #444;\n}<\/code><\/pre>\n<p><strong>Naming your colours<\/strong><\/p>\n<p>When coming up with your colour names, you can have different approaches, especially if you reuse your theme on multiple sites and also want to reuse some of your code.<\/p>\n<p>You can name them after the actual colour, like in our example, or you can use generic names like \u201cprimary\u201d, \u201csecondary\u201d, or \u201ctertiary\u201d colour. The name attribute is also used for the tool-tips in the colour picker and read-back in screen reader software. If your theme is for a broader user base, non-colour specific names are not helpful to your visibly impaired editors.<\/p>\n<p><strong>Remove the custom colour picker<\/strong><\/p>\n<p align=\"center\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-20839\" src=\"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/felix-arntz-tweet.png\" alt=\"\" width=\"604\" height=\"186\" \/><\/p>\n<p>By default Gutenberg adds an additional custom colour picker to the sidebar, so if the user doesn\u2019t like any of your branded colour, they can select their own. That might not always be wanted. You can disable it in your <code>functions.php<\/code>:<\/p>\n<pre><code>\/\/ -- Disable Custom Colors\nadd_theme_support( 'disable-custom-colors' );<\/code><\/pre>\n<h3>Block font sizes<\/h3>\n<p>In a similar process to the custom colour palettes, you can also standardise the available font sizes for the paragraph block and others.<\/p>\n<p>It starts with the registration of the theme support in the <code>functions.php<\/code> with a similar array of arrays for <code>editor-font-sizes<\/code> and the attributes, name, size and slug.<\/p>\n<pre><code>add_theme_support( \u2018editor-font-sizes\u2019, array(\n\tarray( \n\t\t\u2018name\u2019 =&gt; __( \u2018Small\u2019, \u2018gutenbergtheme\u2019 ),\n\t\t\u2018Size\u2019 =&gt; 12,\n\t\t\u2018Slug\u2019 =&gt; \u2018small\u2019\n\t),\n\tarray(\n\t\t\u2018name\u2019 =&gt; __( \u2018Normal\u2019, \u2018gutenbergtheme\u2019 ),\n\t\t\u2018size\u2019 =&gt; 16,\n\t\t\u2018slug\u2019 =&gt; \u2018normal\u2019\n\t),\n\tarray(\n\t\t\u2018name\u2019 =&gt; __( \u2018Large\u2019, \u2018gutenbergtheme\u2019 ),\n\t\t\u2018Size\u2019 =&gt; 36,\n\t\t\u2018Slug\u2019 =&gt; \u2018large\u2019\n\t),\n\tarray(\n\t\t\u2018name\u2019 =&gt; __( \u2018Huge\u2019, \u2018gutenbergtheme\u2019 ),\n\t\t\u2018Size\u2019 =&gt; 50,\n\t\t\u2018Slug\u2019 =&gt; \u2018huge\u2019\n\t),\n) );<\/code><\/pre>\n<p>Then in the stylesheet you declare the class names and CSS for the text display on the front-end.<\/p>\n<p><code><\/p>\n<pre>.has-small-font-size {\n\tfont-size: 12px;\n}\n.has-regular-font-size {\n\tfont-size: 16px;\n}\n\n.has-large-font-size {\n\tfont-size: 36px;\n}\n\n.has-huge-font-size {\n\tfont-size: 50px;\n}<\/pre>\n<p><\/code><\/p>\n<p>And, similar to the custom colour palettes, you can disable the ability to customise those font sizes as well:<\/p>\n<p><code>add_theme_support('disable-custom-font-sizes');<\/code><\/p>\n<p>To summarise:<\/p>\n<ul>\n<li>The block editor works out of the box, unless you use proprietary themes and third party page builders.<\/li>\n<li>You can test your current theme by using the test files and process described here, and it will only take you about five minutes.<\/li>\n<li>You can enable align-wide and align-full styles for images and cover blocks to extend beyond the one-column content width and stretch edget-to-edge.<\/li>\n<li>For brand standards, you can restrict the range of colour choices and font sizes for your text blocks.<\/li>\n<\/ul>\n<p>If you are not the code-reading and editing site owners, there are a few plugins in the WordPress plugin repository that help you make your theme Gutenberg-ready and provide additional support for site owners:<\/p>\n<ul>\n<li><a href=\"https:\/\/wordpress.org\/plugins\/enable-gutenberg-theme-support\/\">Enable Gutenberg Theme Support<\/a> (by Israel Escuer and Jose Angel Vidania)<\/li>\n<li>The<a href=\"https:\/\/wordpress.org\/plugins\/blocks-css\/\"> Blocks CSS plugin<\/a> by ThemeIsle allows you \u201cto add custom CSS to your Gutenberg Blocks straight from the editor\u201d.<\/li>\n<li>The <a href=\"https:\/\/wordpress.org\/plugins\/block-unit-test\/\">\u201cBlock Unit Test\u201d<\/a> plugin by Rich Tabor provides you with a new page to test default Gutenberg blocks.<\/li>\n<\/ul>\n<h3>Gutenberg-ready themes<\/h3>\n<p>Should your theme be more outdated than you originally thought, here are a few suggestions for Gutenberg themes. Of course, this list isn\u2019t exhaustive. It should get you started, though.<\/p>\n<ul>\n<li><a href=\"https:\/\/themeshaper.com\/2018\/05\/22\/music-a-gutenberg-powered-theme\/\">Music<\/a> by ThemeShaper<\/li>\n<li><a href=\"https:\/\/make.wordpress.org\/core\/2018\/10\/16\/introducing-twenty-nineteen\/\">Twenty Nineteen <\/a>by Allan Cole<\/li>\n<li><a href=\"https:\/\/atomicblocks.com\/\">Atomic Blocks<\/a> by Mike McAllister<\/li>\n<li><a href=\"https:\/\/wordpress.org\/themes\/coblocks\/\">CoBlocks<\/a> by Rich Tabor<\/li>\n<li>WordPress.com Business themes\n<ul>\n<li><a href=\"https:\/\/wordpress.com\/theme\/modern-business\">Modern Business<\/a><\/li>\n<li><a href=\"https:\/\/wordpress.com\/theme\/friendly-business\">Friendly Business<\/a><\/li>\n<li><a href=\"https:\/\/wordpress.com\/theme\/calm-business\">Calm Business<\/a><\/li>\n<li><a href=\"https:\/\/wordpress.com\/theme\/elegant-business\">Elegant Business<\/a><\/li>\n<li><a href=\"https:\/\/wordpress.com\/theme\/professional-business\">Professional Business<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>On each theme\u2019s page scroll all the way to the bottom to download the files for your self-hosted WordPress site.<\/p>\n<p>For the WordPress 5.0 release, Laurel Fulford also made previously released default WordPress themes Gutenberg-ready. You can use <a href=\"https:\/\/wordpress.org\/themes\/twentyseventeen\/\">Twenty-Seventeen<\/a>, <a href=\"https:\/\/wordpress.org\/themes\/twentysixteen\/\">Twenty-Sixteen<\/a>, <a href=\"https:\/\/wordpress.org\/themes\/twentyfifteen\/\">Twenty-Fifteeen<\/a>, <a href=\"https:\/\/wordpress.org\/themes\/twentyfourteen\/\">Twenty-Fourteen<\/a>, <a href=\"https:\/\/wordpress.org\/themes\/twentytwelve\/\">Twenty-Twelve<\/a> and <a href=\"https:\/\/wordpress.org\/themes\/twentyeleven\/\">Twenty-Eleve<\/a>n with the new WordPress block editor.<\/p>\n<p>Earlier this year, Heart Internet, published a collection of <a href=\"https:\/\/www.heartinternet.uk\/blog\/12-gutenberg-friendly-free-wordpress-themes\/\">12 Gutenberg-friendly free WordPress themes.<\/a><\/p>\n<h3>More developer resources<\/h3>\n<ul>\n<li>WordPress Developer Documentation. The block editor documentation is not yet linked to the <a href=\"https:\/\/developer.wordpress.org\/\">developer.wordpress.org<\/a> site. The most current information is available in the <a href=\"https:\/\/wordpress.org\/gutenberg\/handbook\/designers-developers\/\">Gutenberg Handbook for Designers &amp; Developers<\/a>. Those handbook pages are auto-generated from <a href=\"https:\/\/github.com\/WordPress\/gutenberg\/tree\/master\/docs\">Code documentation on GitHub.<\/a><\/li>\n<li>Laurel Fulford: <a href=\"https:\/\/themeshaper.com\/2018\/02\/15\/styling-themes-for-gutenberg\/\">Styling Themes for Gutenberg<\/a> \u2014 What we learned by developing three themes with Gutenberg in mind.<\/li>\n<li>Zac Gordon\u2019s <a href=\"https:\/\/javascriptforwp.com\/product\/gutenberg-theme-development-course\/ref\/630\/\">JavaScript for WordPress<\/a> has a brand new course on Gutenberg theming in collaboration with Joe Casabona. They cover all the above items for developers and walk them through a Gutenberg starter theme.<\/li>\n<li>Bill Erickson published a whole blog series on <a href=\"https:\/\/www.billerickson.net\/building-a-gutenberg-website\/\">Gutenberg theme development<\/a>.<\/li>\n<li>Jason Yingling: <a href=\"https:\/\/jasonyingling.me\/working-with-editor-styles-in-gutenberg\/\">Working with Editor Styles in Gutenberg<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Plenty of WordPress themes are described as &#8220;Gutenberg-ready&#8221;, but what does that really mean for designers working with the new WordPress editor.<\/p>\n","protected":false},"author":2,"featured_media":20852,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12,24,27],"tags":[],"class_list":{"0":"post-20823","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-guest-posts","8":"category-web-design","9":"category-wordpress"},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>What does \u2018Gutenberg-ready\u2019 mean for WordPress themes? - Heart Internet<\/title>\n<meta name=\"description\" content=\"Find out how you&#039;ll need to adapt to embrace the world of Gutenberg-ready WordPress themes.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.heartinternet.uk\/blog\/what-does-gutenberg-ready-mean-for-wordpress-themes\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"What does \u2018Gutenberg-ready\u2019 mean for WordPress themes? - Heart Internet\" \/>\n<meta property=\"og:description\" content=\"Find out how you&#039;ll need to adapt to embrace the world of Gutenberg-ready WordPress themes.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.heartinternet.uk\/blog\/what-does-gutenberg-ready-mean-for-wordpress-themes\/\" \/>\n<meta property=\"og:site_name\" content=\"Heart Internet\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/heartinternet\/\" \/>\n<meta property=\"article:published_time\" content=\"2019-05-14T11:30:13+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/2019\/04\/typeface.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1100\" \/>\n\t<meta property=\"og:image:height\" content=\"733\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Eliot Chambers-Ostler\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@heartinternet\" \/>\n<meta name=\"twitter:site\" content=\"@heartinternet\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Eliot Chambers-Ostler\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimated reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"12 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.heartinternet.uk\/blog\/what-does-gutenberg-ready-mean-for-wordpress-themes\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.heartinternet.uk\/blog\/what-does-gutenberg-ready-mean-for-wordpress-themes\/\"},\"author\":{\"name\":\"Eliot Chambers-Ostler\",\"@id\":\"https:\/\/heartblog.victory.digital\/#\/schema\/person\/58ed7f27cc0f3ab6e69135742a5eee28\"},\"headline\":\"What does \u2018Gutenberg-ready\u2019 mean for WordPress themes?\",\"datePublished\":\"2019-05-14T11:30:13+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.heartinternet.uk\/blog\/what-does-gutenberg-ready-mean-for-wordpress-themes\/\"},\"wordCount\":2130,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/heartblog.victory.digital\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.heartinternet.uk\/blog\/what-does-gutenberg-ready-mean-for-wordpress-themes\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/2019\/04\/typeface.jpg\",\"articleSection\":[\"Guest Posts\",\"Web Design\",\"WordPress\"],\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.heartinternet.uk\/blog\/what-does-gutenberg-ready-mean-for-wordpress-themes\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.heartinternet.uk\/blog\/what-does-gutenberg-ready-mean-for-wordpress-themes\/\",\"url\":\"https:\/\/www.heartinternet.uk\/blog\/what-does-gutenberg-ready-mean-for-wordpress-themes\/\",\"name\":\"What does \u2018Gutenberg-ready\u2019 mean for WordPress themes? - Heart Internet\",\"isPartOf\":{\"@id\":\"https:\/\/heartblog.victory.digital\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.heartinternet.uk\/blog\/what-does-gutenberg-ready-mean-for-wordpress-themes\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.heartinternet.uk\/blog\/what-does-gutenberg-ready-mean-for-wordpress-themes\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/2019\/04\/typeface.jpg\",\"datePublished\":\"2019-05-14T11:30:13+00:00\",\"description\":\"Find out how you'll need to adapt to embrace the world of Gutenberg-ready WordPress themes.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.heartinternet.uk\/blog\/what-does-gutenberg-ready-mean-for-wordpress-themes\/#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.heartinternet.uk\/blog\/what-does-gutenberg-ready-mean-for-wordpress-themes\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\/\/www.heartinternet.uk\/blog\/what-does-gutenberg-ready-mean-for-wordpress-themes\/#primaryimage\",\"url\":\"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/2019\/04\/typeface.jpg\",\"contentUrl\":\"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/2019\/04\/typeface.jpg\",\"width\":1100,\"height\":733},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.heartinternet.uk\/blog\/what-does-gutenberg-ready-mean-for-wordpress-themes\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.heartinternet.uk\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"What does \u2018Gutenberg-ready\u2019 mean for WordPress themes?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/heartblog.victory.digital\/#website\",\"url\":\"https:\/\/heartblog.victory.digital\/\",\"name\":\"Heart Internet\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/heartblog.victory.digital\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/heartblog.victory.digital\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-GB\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/heartblog.victory.digital\/#organization\",\"name\":\"Heart Internet\",\"url\":\"https:\/\/heartblog.victory.digital\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\/\/heartblog.victory.digital\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/2025\/02\/HeartInternet_Logo_Colour.webp\",\"contentUrl\":\"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/2025\/02\/HeartInternet_Logo_Colour.webp\",\"width\":992,\"height\":252,\"caption\":\"Heart Internet\"},\"image\":{\"@id\":\"https:\/\/heartblog.victory.digital\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/heartinternet\/\",\"https:\/\/x.com\/heartinternet\",\"https:\/\/www.linkedin.com\/company\/heart-internet-ltd\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/heartblog.victory.digital\/#\/schema\/person\/58ed7f27cc0f3ab6e69135742a5eee28\",\"name\":\"Eliot Chambers-Ostler\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\/\/heartblog.victory.digital\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/2025\/08\/cropped-Eliot-96x96.jpg\",\"contentUrl\":\"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/2025\/08\/cropped-Eliot-96x96.jpg\",\"caption\":\"Eliot Chambers-Ostler\"},\"url\":\"https:\/\/www.heartinternet.uk\/blog\/author\/eliot-chambers-ostler\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"What does \u2018Gutenberg-ready\u2019 mean for WordPress themes? - Heart Internet","description":"Find out how you'll need to adapt to embrace the world of Gutenberg-ready WordPress themes.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.heartinternet.uk\/blog\/what-does-gutenberg-ready-mean-for-wordpress-themes\/","og_locale":"en_GB","og_type":"article","og_title":"What does \u2018Gutenberg-ready\u2019 mean for WordPress themes? - Heart Internet","og_description":"Find out how you'll need to adapt to embrace the world of Gutenberg-ready WordPress themes.","og_url":"https:\/\/www.heartinternet.uk\/blog\/what-does-gutenberg-ready-mean-for-wordpress-themes\/","og_site_name":"Heart Internet","article_publisher":"https:\/\/www.facebook.com\/heartinternet\/","article_published_time":"2019-05-14T11:30:13+00:00","og_image":[{"width":1100,"height":733,"url":"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/2019\/04\/typeface.jpg","type":"image\/jpeg"}],"author":"Eliot Chambers-Ostler","twitter_card":"summary_large_image","twitter_creator":"@heartinternet","twitter_site":"@heartinternet","twitter_misc":{"Written by":"Eliot Chambers-Ostler","Estimated reading time":"12 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.heartinternet.uk\/blog\/what-does-gutenberg-ready-mean-for-wordpress-themes\/#article","isPartOf":{"@id":"https:\/\/www.heartinternet.uk\/blog\/what-does-gutenberg-ready-mean-for-wordpress-themes\/"},"author":{"name":"Eliot Chambers-Ostler","@id":"https:\/\/heartblog.victory.digital\/#\/schema\/person\/58ed7f27cc0f3ab6e69135742a5eee28"},"headline":"What does \u2018Gutenberg-ready\u2019 mean for WordPress themes?","datePublished":"2019-05-14T11:30:13+00:00","mainEntityOfPage":{"@id":"https:\/\/www.heartinternet.uk\/blog\/what-does-gutenberg-ready-mean-for-wordpress-themes\/"},"wordCount":2130,"commentCount":0,"publisher":{"@id":"https:\/\/heartblog.victory.digital\/#organization"},"image":{"@id":"https:\/\/www.heartinternet.uk\/blog\/what-does-gutenberg-ready-mean-for-wordpress-themes\/#primaryimage"},"thumbnailUrl":"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/2019\/04\/typeface.jpg","articleSection":["Guest Posts","Web Design","WordPress"],"inLanguage":"en-GB","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.heartinternet.uk\/blog\/what-does-gutenberg-ready-mean-for-wordpress-themes\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.heartinternet.uk\/blog\/what-does-gutenberg-ready-mean-for-wordpress-themes\/","url":"https:\/\/www.heartinternet.uk\/blog\/what-does-gutenberg-ready-mean-for-wordpress-themes\/","name":"What does \u2018Gutenberg-ready\u2019 mean for WordPress themes? - Heart Internet","isPartOf":{"@id":"https:\/\/heartblog.victory.digital\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.heartinternet.uk\/blog\/what-does-gutenberg-ready-mean-for-wordpress-themes\/#primaryimage"},"image":{"@id":"https:\/\/www.heartinternet.uk\/blog\/what-does-gutenberg-ready-mean-for-wordpress-themes\/#primaryimage"},"thumbnailUrl":"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/2019\/04\/typeface.jpg","datePublished":"2019-05-14T11:30:13+00:00","description":"Find out how you'll need to adapt to embrace the world of Gutenberg-ready WordPress themes.","breadcrumb":{"@id":"https:\/\/www.heartinternet.uk\/blog\/what-does-gutenberg-ready-mean-for-wordpress-themes\/#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.heartinternet.uk\/blog\/what-does-gutenberg-ready-mean-for-wordpress-themes\/"]}]},{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/www.heartinternet.uk\/blog\/what-does-gutenberg-ready-mean-for-wordpress-themes\/#primaryimage","url":"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/2019\/04\/typeface.jpg","contentUrl":"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/2019\/04\/typeface.jpg","width":1100,"height":733},{"@type":"BreadcrumbList","@id":"https:\/\/www.heartinternet.uk\/blog\/what-does-gutenberg-ready-mean-for-wordpress-themes\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.heartinternet.uk\/blog\/"},{"@type":"ListItem","position":2,"name":"What does \u2018Gutenberg-ready\u2019 mean for WordPress themes?"}]},{"@type":"WebSite","@id":"https:\/\/heartblog.victory.digital\/#website","url":"https:\/\/heartblog.victory.digital\/","name":"Heart Internet","description":"","publisher":{"@id":"https:\/\/heartblog.victory.digital\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/heartblog.victory.digital\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-GB"},{"@type":"Organization","@id":"https:\/\/heartblog.victory.digital\/#organization","name":"Heart Internet","url":"https:\/\/heartblog.victory.digital\/","logo":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/heartblog.victory.digital\/#\/schema\/logo\/image\/","url":"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/2025\/02\/HeartInternet_Logo_Colour.webp","contentUrl":"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/2025\/02\/HeartInternet_Logo_Colour.webp","width":992,"height":252,"caption":"Heart Internet"},"image":{"@id":"https:\/\/heartblog.victory.digital\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/heartinternet\/","https:\/\/x.com\/heartinternet","https:\/\/www.linkedin.com\/company\/heart-internet-ltd"]},{"@type":"Person","@id":"https:\/\/heartblog.victory.digital\/#\/schema\/person\/58ed7f27cc0f3ab6e69135742a5eee28","name":"Eliot Chambers-Ostler","image":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/heartblog.victory.digital\/#\/schema\/person\/image\/","url":"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/2025\/08\/cropped-Eliot-96x96.jpg","contentUrl":"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/2025\/08\/cropped-Eliot-96x96.jpg","caption":"Eliot Chambers-Ostler"},"url":"https:\/\/www.heartinternet.uk\/blog\/author\/eliot-chambers-ostler\/"}]}},"_links":{"self":[{"href":"https:\/\/www.heartinternet.uk\/blog\/wp-json\/wp\/v2\/posts\/20823","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.heartinternet.uk\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.heartinternet.uk\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.heartinternet.uk\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.heartinternet.uk\/blog\/wp-json\/wp\/v2\/comments?post=20823"}],"version-history":[{"count":0,"href":"https:\/\/www.heartinternet.uk\/blog\/wp-json\/wp\/v2\/posts\/20823\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.heartinternet.uk\/blog\/wp-json\/wp\/v2\/media\/20852"}],"wp:attachment":[{"href":"https:\/\/www.heartinternet.uk\/blog\/wp-json\/wp\/v2\/media?parent=20823"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.heartinternet.uk\/blog\/wp-json\/wp\/v2\/categories?post=20823"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.heartinternet.uk\/blog\/wp-json\/wp\/v2\/tags?post=20823"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}