{"id":41438,"date":"2023-08-10T07:00:06","date_gmt":"2023-08-10T14:00:06","guid":{"rendered":"https:\/\/dhblog.dream.press\/blog\/?p=41438"},"modified":"2026-08-26T20:20:48","modified_gmt":"2026-08-27T03:20:48","slug":"how-to-use-wordpress-blocks","status":"publish","type":"post","link":"https:\/\/www.dreamhost.com\/blog\/how-to-use-wordpress-blocks\/","title":{"rendered":"How To Use WordPress Blocks (+ How To Create Your Own!)"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Think about a bin of Legos. Every castle, spaceship, and questionable duck starts from the same pile of snap-together pieces. Modern WordPress works exactly the same way.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">WordPress blocks are the individual pieces of content \u2014 paragraphs, images, buttons, videos \u2014 that you stack, rearrange, and style to build every page and post in the <a href=\"https:\/\/www.dreamhost.com\/blog\/what-is-wordpress\/\" target=\"_blank\" rel=\"noopener\">WordPress<\/a> editor. Each element you add is its own block, and every block can be moved, customized, or deleted on its own.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Blocks arrived with WordPress 5.0 back in December 2018, but they\u2019re still one of the most misunderstood and underused features in the CMS. If you started out on the classic editor, you may still think of blocks as \u201cnew\u201d WordPress.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This guide covers how blocks work, which ones ship with WordPress, and two ways to build your own custom blocks: with a plugin (the easy way) and from scratch (developer mode). Once you understand them, you can customize your site in ways that used to mean hiring a designer or developer.<\/p>\n\n\n\n<h2 id=\"definition\" class=\"wp-block-heading\">What are WordPress blocks?<\/h2>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" width=\"1600\" height=\"1052\" data-src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/08\/Wordpress-Blocks.jpg.webp\" alt=\"Wordpress Blocks\" class=\"wp-image-41445 lazyload\" data-srcset=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/08\/Wordpress-Blocks.jpg.webp 1600w, https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2023\/08\/Wordpress-Blocks-300x197.jpg 300w, https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2023\/08\/Wordpress-Blocks-1024x673.jpg 1024w, https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2023\/08\/Wordpress-Blocks-768x505.jpg 768w, https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2023\/08\/Wordpress-Blocks-1536x1010.jpg 1536w, https:\/\/www.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/08\/Wordpress-Blocks-600x395.jpg.webp 600w, https:\/\/www.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/08\/Wordpress-Blocks-1200x789.jpg.webp 1200w, https:\/\/www.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/08\/Wordpress-Blocks-730x480.jpg.webp 730w, https:\/\/www.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/08\/Wordpress-Blocks-1460x960.jpg.webp 1460w, https:\/\/www.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/08\/Wordpress-Blocks-784x515.jpg.webp 784w, https:\/\/www.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/08\/Wordpress-Blocks-1568x1031.jpg.webp 1568w, https:\/\/www.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/08\/Wordpress-Blocks-877x577.jpg.webp 877w\" data-sizes=\"(max-width: 1600px) 100vw, 1600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1600px; --smush-placeholder-aspect-ratio: 1600\/1052;\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">WordPress blocks are, as the name suggests, stackable <i>building blocks<\/i>: self-contained content elements that you add to the pages and posts on your WordPress site.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">They were introduced in <a href=\"https:\/\/wordpress.org\/news\/2018\/12\/bebo\/\" target=\"_blank\" rel=\"noopener\">WordPress 5.0<\/a>, released on December 6, 2018, alongside the new block editor. Blocks are now the standard way to build content in WordPress. And since full site editing shipped with WordPress 5.9 in early 2022, block themes let you use blocks for your entire site, including headers, footers, and templates, not just posts.<\/p>\n\n\n\n<div class=\"glossary-term\">\n\t<div class=\"glossary-term__above-title\">\n\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 640 512\"><path d=\"M320 32c-8.1 0-16.1 1.4-23.7 4.1L15.8 137.4C6.3 140.9 0 149.9 0 160s6.3 19.1 15.8 22.6l57.9 20.9C57.3 229.3 48 259.8 48 291.9v28.1c0 28.4-10.8 57.7-22.3 80.8c-6.5 13-13.9 25.8-22.5 37.6C0 442.7-.9 448.3 .9 453.4s6 8.9 11.2 10.2l64 16c4.2 1.1 8.7 .3 12.4-2s6.3-6.1 7.1-10.4c8.6-42.8 4.3-81.2-2.1-108.7C90.3 344.3 86 329.8 80 316.5V291.9c0-30.2 10.2-58.7 27.9-81.5c12.9-15.5 29.6-28 49.2-35.7l157-61.7c8.2-3.2 17.5 .8 20.7 9s-.8 17.5-9 20.7l-157 61.7c-12.4 4.9-23.3 12.4-32.2 21.6l159.6 57.6c7.6 2.7 15.6 4.1 23.7 4.1s16.1-1.4 23.7-4.1L624.2 182.6c9.5-3.4 15.8-12.5 15.8-22.6s-6.3-19.1-15.8-22.6L343.7 36.1C336.1 33.4 328.1 32 320 32zM128 408c0 35.3 86 72 192 72s192-36.7 192-72L496.7 262.6 354.5 314c-11.1 4-22.8 6-34.5 6s-23.5-2-34.5-6L143.3 262.6 128 408z\"\/><\/svg>\n\t\t<span>DreamHost Glossary<\/span>\n\t<\/div>\n    <h3>Gutenberg<\/h3>\n    <p>Gutenberg is the name for the Block Editor project in WordPress. A lot of WordPress developers and enthusiasts use the terms Gutenberg Editor and Block Editor interchangeably.<\/p>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Think of the editor as a built-in page builder. Click the \u201c+\u201d button (or type \u201c\/\u201d in an empty paragraph) and pick a block. WordPress\u2019s own <a href=\"https:\/\/developer.wordpress.org\/block-editor\/reference-guides\/core-blocks\/\" target=\"_blank\" rel=\"noopener\">Core Blocks Reference<\/a> lists more than 100 blocks in the core library, though that count includes child blocks (each Column inside a Columns block gets its own entry) plus a few deprecated and experimental ones. In practice, the block inserter sorts what you\u2019ll actually use into six categories: Text, Media, Design, Widgets, Theme, and Embeds.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Each block works like a small widget. Blocks can embed content from another site or service, add functionality like a calendar to a page, or hold a specific piece of content with predefined formatting. Most blocks also have settings that control how they look or behave on your site.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The block editor is a massive upgrade from the classic editor, which was essentially one big text box. The classic editor supported more than text and images, but complex layouts often depended on shortcodes, plugins, or custom code.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><b>Nerd note:<\/b> If for some reason you don\u2019t see blocks in your editor, there are two likely reasons. One is that your <a href=\"https:\/\/www.dreamhost.com\/wordpress\/\" target=\"_blank\" rel=\"noopener\">WordPress installation<\/a> is horribly outdated (like years and years old). The other is that the Classic Editor plugin is active and has reverted you to the old editing experience. Check your plugins page from wp-admin to figure out if that\u2019s the case for you.<\/p>\n\n\n\n<div class=\"article-newsletter article-newsletter--gradient\">\n\n\n<h2>Get Content Delivered Straight to Your Inbox<\/h2><p>Subscribe now to receive all the latest updates, delivered directly to your inbox.<\/p><form class=\"nwsl-form\" id=\"newsletter_block_\" novalidate><div class=\"messages\"><\/div><div class=\"form-group\"><label for=\"input_newsletter_block_\"><input type=\"email\"name=\"email\"id=\"input_newsletter_block_\"placeholder=\"Enter your email address\"novalidatedisabled=\"disabled\"\/><\/label><button type=\"submit\"class=\"btn btn--brand\"disabled=\"disabled\"><span>Sign Me Up!<\/span><svg width=\"21\" height=\"14\" viewBox=\"0 0 21 14\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n<path d=\"M13.8523 0.42524L12.9323 1.34521C12.7095 1.56801 12.7132 1.9304 12.9404 2.14865L16.7241 5.7823H0.5625C0.251859 5.7823 0 6.03416 0 6.3448V7.6573C0 7.96794 0.251859 8.2198 0.5625 8.2198H16.7241L12.9405 11.8535C12.7132 12.0717 12.7095 12.4341 12.9323 12.6569L13.8523 13.5769C14.072 13.7965 14.4281 13.7965 14.6478 13.5769L20.8259 7.39879C21.0456 7.17913 21.0456 6.82298 20.8259 6.60327L14.6477 0.42524C14.4281 0.205584 14.0719 0.205584 13.8523 0.42524Z\" fill=\"white\"\/>\n<\/svg>\n<\/button><\/div><\/form><\/div>\n\n\n<h2 id=\"blocks\" class=\"wp-block-heading\">What blocks does WordPress already have?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">By default, the block editor gives you a <i>huge<\/i> menu of <a href=\"https:\/\/wordpress.org\/documentation\/article\/blocks-list\/\" target=\"_blank\" rel=\"noopener\">available blocks<\/a>. You can use them to customize your WordPress theme, let writers and bloggers add rich content to their posts, pull in social media content, and so much more.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Let\u2019s look at some of the most popular and helpful default blocks.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Most common blocks<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Everything you add in the block editor is a block, including plain text and images. That means the most common blocks are the different types of text and image elements you might add to a page.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Things like:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Paragraph block \u2014 Every paragraph you write lives in its own block. Write a little or write a lot.<\/li>\n\n\n\n<li>Image block \u2014 For when you want to show as well as tell, throw an image in the mix for some added flair.<\/li>\n\n\n\n<li>List block \u2014 Ordered or unordered, outlines or checklists. (This list is one.)<\/li>\n\n\n\n<li>Gallery block \u2014 Vacation photos and product shots, arranged in a grid without any fiddling.<\/li>\n\n\n\n<li>Table block \u2014 Build a pricing table or share spreadsheet data without touching HTML.<\/li>\n\n\n\n<li>Pullquote block \u2014 Call attention to the one line you want readers to remember.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Each of these is an element you can add to your website with the block editor, then position and style within the content section of the page.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Embedded content blocks<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Blocks make it extremely easy to pull outside content into your WordPress website without installing anything extra. The core Embed block has variations for more than 30 services: paste a link, and WordPress handles the rest.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A few of the most useful embed variations:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>YouTube<\/li>\n\n\n\n<li>X (renamed from the Twitter block)<\/li>\n\n\n\n<li>Spotify<\/li>\n\n\n\n<li>Vimeo<\/li>\n\n\n\n<li>TikTok<\/li>\n\n\n\n<li>Reddit<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">One catch worth knowing: the Facebook and Instagram embed blocks were removed in WordPress 5.6, so those two need a plugin or manual embed code.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Blocks for things like contact forms, testimonials, FAQs, WooCommerce products, and scheduling tools exist too, but those are added by plugins rather than shipping with WordPress core. Install the plugin, and its blocks show up in the same \u201c+\u201d inserter as everything else.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Specialty blocks<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Here\u2019s where things get really spicy.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Beyond the basics and embedded content, there\u2019s a set of advanced blocks for special cases. Like maybe you want to improve your site\u2019s navigation and UX, or use WordPress as a full-blown site builder.<\/p>\n\n\n\n<div class=\"glossary-term\">\n\t<div class=\"glossary-term__above-title\">\n\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 640 512\"><path d=\"M320 32c-8.1 0-16.1 1.4-23.7 4.1L15.8 137.4C6.3 140.9 0 149.9 0 160s6.3 19.1 15.8 22.6l57.9 20.9C57.3 229.3 48 259.8 48 291.9v28.1c0 28.4-10.8 57.7-22.3 80.8c-6.5 13-13.9 25.8-22.5 37.6C0 442.7-.9 448.3 .9 453.4s6 8.9 11.2 10.2l64 16c4.2 1.1 8.7 .3 12.4-2s6.3-6.1 7.1-10.4c8.6-42.8 4.3-81.2-2.1-108.7C90.3 344.3 86 329.8 80 316.5V291.9c0-30.2 10.2-58.7 27.9-81.5c12.9-15.5 29.6-28 49.2-35.7l157-61.7c8.2-3.2 17.5 .8 20.7 9s-.8 17.5-9 20.7l-157 61.7c-12.4 4.9-23.3 12.4-32.2 21.6l159.6 57.6c7.6 2.7 15.6 4.1 23.7 4.1s16.1-1.4 23.7-4.1L624.2 182.6c9.5-3.4 15.8-12.5 15.8-22.6s-6.3-19.1-15.8-22.6L343.7 36.1C336.1 33.4 328.1 32 320 32zM128 408c0 35.3 86 72 192 72s192-36.7 192-72L496.7 262.6 354.5 314c-11.1 4-22.8 6-34.5 6s-23.5-2-34.5-6L143.3 262.6 128 408z\"\/><\/svg>\n\t\t<span>DreamHost Glossary<\/span>\n\t<\/div>\n    <h3>Navigation<\/h3>\n    <p>On the web, the term \u2018navigation\u2019 represents moving from one website or page to another. Navigation is also a common term in web development and design. There\u2019s an emphasis on making it easy for users to find the pages they need.<\/p>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Here are a few to check out:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Buttons block<\/li>\n\n\n\n<li>Columns block<\/li>\n\n\n\n<li>Group block<\/li>\n\n\n\n<li>Details block (collapsible content)<\/li>\n\n\n\n<li>Navigation block<\/li>\n\n\n\n<li>Query Loop block (displays posts based on criteria you set)<\/li>\n\n\n\n<li>Pattern block (WordPress 6.3 renamed reusable blocks to patterns; a synced pattern updates everywhere it\u2019s used when you edit it once)<\/li>\n\n\n\n<li>Shortcode block<\/li>\n\n\n\n<li>Table of Contents block<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">With these blocks, you can pull in custom content directly from the WordPress database or fully control the layout, spacing, and flow of each page or post on your website. And if you want ready-made layouts built from groups of blocks, our guide to <a href=\"https:\/\/www.dreamhost.com\/blog\/wordpress-block-patterns\/\" target=\"_blank\" rel=\"noopener\">WordPress block patterns<\/a> picks up where this list leaves off.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That\u2019s all great and dandy.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><i>But what if you need a block that doesn\u2019t come with WordPress by default?&nbsp;<\/i><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Luckily, blocks are also customizable. Just like widgets, you can install new blocks and even create your own to fit the needs of your website design and template.<\/p>\n\n\n\n<div class=\"glossary-term\">\n\t<div class=\"glossary-term__above-title\">\n\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 640 512\"><path d=\"M320 32c-8.1 0-16.1 1.4-23.7 4.1L15.8 137.4C6.3 140.9 0 149.9 0 160s6.3 19.1 15.8 22.6l57.9 20.9C57.3 229.3 48 259.8 48 291.9v28.1c0 28.4-10.8 57.7-22.3 80.8c-6.5 13-13.9 25.8-22.5 37.6C0 442.7-.9 448.3 .9 453.4s6 8.9 11.2 10.2l64 16c4.2 1.1 8.7 .3 12.4-2s6.3-6.1 7.1-10.4c8.6-42.8 4.3-81.2-2.1-108.7C90.3 344.3 86 329.8 80 316.5V291.9c0-30.2 10.2-58.7 27.9-81.5c12.9-15.5 29.6-28 49.2-35.7l157-61.7c8.2-3.2 17.5 .8 20.7 9s-.8 17.5-9 20.7l-157 61.7c-12.4 4.9-23.3 12.4-32.2 21.6l159.6 57.6c7.6 2.7 15.6 4.1 23.7 4.1s16.1-1.4 23.7-4.1L624.2 182.6c9.5-3.4 15.8-12.5 15.8-22.6s-6.3-19.1-15.8-22.6L343.7 36.1C336.1 33.4 328.1 32 320 32zM128 408c0 35.3 86 72 192 72s192-36.7 192-72L496.7 262.6 354.5 314c-11.1 4-22.8 6-34.5 6s-23.5-2-34.5-6L143.3 262.6 128 408z\"\/><\/svg>\n\t\t<span>DreamHost Glossary<\/span>\n\t<\/div>\n    <h3>Widget<\/h3>\n    <p>WordPress widgets can add features to your website\u2019s sidebars, footers, or other areas. Some default WordPress widgets are Categories, Tag Cloud, Search, Navigation Menu, Calendar, and Recent Posts.<\/p>\n<\/div>\n\n\n\n<h2 id=\"create\" class=\"wp-block-heading\">How to create custom blocks with a WordPress plugin<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">By far, the easiest way to create a custom block is to use a block builder plugin. You define the fields your block needs, write a bit of markup, and the plugin handles the registration work that would otherwise require JavaScript.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Our pick is <a href=\"https:\/\/wordpress.org\/plugins\/lazy-blocks\/\" target=\"_blank\" rel=\"noopener\">Custom Block Builder \u2013 Lazy Blocks<\/a>, a free plugin that lets you build blocks visually: add controls with drag and drop, then write the block\u2019s output in HTML or PHP. You\u2019ll want a basic understanding of <a href=\"https:\/\/www.dreamhost.com\/blog\/learn-html\/\" target=\"_blank\" rel=\"noopener\">HTML<\/a> and <a href=\"https:\/\/www.dreamhost.com\/blog\/learn-css\/\" target=\"_blank\" rel=\"noopener\">CSS<\/a> to structure and style the block to fit your needs.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">One trade-off to accept up front: blocks you build this way depend on the block builder, so plan on keeping the plugin installed and active for as long as the blocks are in use.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 1: Install and activate the plugin<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">First things first: From wp-admin, go to Plugins &gt; Add New and search for \u201cLazy Blocks.\u201d Install it.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">(Don\u2019t forget to click Activate.)<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 2: Add a new block<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Once installed and activated, you\u2019ll see a new option in the left-hand navigation of the WP admin panel.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Add a new block and configure the basics: give it a name, an icon, and a category so you can find it in the inserter later.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 3: Add controls (the block\u2019s editable fields)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Now, we\u2019re ready to start building the custom block.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Controls are the fields an editor fills in when they use your block. Lazy Blocks ships with a large set of predefined ones, including text, textarea, image, gallery, URL, select, toggle, and repeater controls, and you can show each control in the block content or in the settings sidebar.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" width=\"1600\" height=\"1171\" data-src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/08\/Genesis-Custom-Blocks-Plugin-setup-screen.jpg.webp\" alt=\"Screenshot showing the Genesis Custom Blocks Plugin setup screen\" class=\"wp-image-41446 lazyload\" data-srcset=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/08\/Genesis-Custom-Blocks-Plugin-setup-screen.jpg.webp 1600w, https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2023\/08\/Genesis-Custom-Blocks-Plugin-setup-screen-300x220.jpg 300w, https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2023\/08\/Genesis-Custom-Blocks-Plugin-setup-screen-1024x749.jpg 1024w, https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2023\/08\/Genesis-Custom-Blocks-Plugin-setup-screen-768x562.jpg 768w, https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2023\/08\/Genesis-Custom-Blocks-Plugin-setup-screen-1536x1124.jpg 1536w, https:\/\/www.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/08\/Genesis-Custom-Blocks-Plugin-setup-screen-600x439.jpg.webp 600w, https:\/\/www.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/08\/Genesis-Custom-Blocks-Plugin-setup-screen-1200x878.jpg.webp 1200w, https:\/\/www.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/08\/Genesis-Custom-Blocks-Plugin-setup-screen-730x534.jpg.webp 730w, https:\/\/www.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/08\/Genesis-Custom-Blocks-Plugin-setup-screen-1460x1069.jpg.webp 1460w, https:\/\/www.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/08\/Genesis-Custom-Blocks-Plugin-setup-screen-784x574.jpg.webp 784w, https:\/\/www.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/08\/Genesis-Custom-Blocks-Plugin-setup-screen-1568x1148.jpg.webp 1568w, https:\/\/www.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/08\/Genesis-Custom-Blocks-Plugin-setup-screen-877x642.jpg.webp 877w\" data-sizes=\"(max-width: 1600px) 100vw, 1600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1600px; --smush-placeholder-aspect-ratio: 1600\/1171;\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Every block builder has some version of this screen. You can think of it sort of like a mini version of the block editor itself: whatever fields you define here become the inputs a writer or editor fills in when adding the block to a page or post.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For example, if you\u2019re building a custom call-to-action (CTA) block, you might add fields like:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Headline text<\/li>\n\n\n\n<li>Subhead text<\/li>\n\n\n\n<li>Button text<\/li>\n\n\n\n<li>CTA button URL<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Each control gets a label and a name (slug) that you\u2019ll reference in the next step.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 4: Write the output code<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Now that we\u2019ve set up the back end of the block, we need to tell WordPress how to actually display the content that\u2019s being added.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Here\u2019s where any prior HTML or CSS knowledge that you may have will come in handy.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" width=\"1600\" height=\"1171\" data-src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/08\/Customize-the-Markup-and-CSS.jpg.webp\" alt=\"Customize the Markup and CSS\" class=\"wp-image-41447 lazyload\" data-srcset=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/08\/Customize-the-Markup-and-CSS.jpg.webp 1600w, https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2023\/08\/Customize-the-Markup-and-CSS-300x220.jpg 300w, https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2023\/08\/Customize-the-Markup-and-CSS-1024x749.jpg 1024w, https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2023\/08\/Customize-the-Markup-and-CSS-768x562.jpg 768w, https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2023\/08\/Customize-the-Markup-and-CSS-1536x1124.jpg 1536w, https:\/\/www.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/08\/Customize-the-Markup-and-CSS-600x439.jpg.webp 600w, https:\/\/www.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/08\/Customize-the-Markup-and-CSS-1200x878.jpg.webp 1200w, https:\/\/www.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/08\/Customize-the-Markup-and-CSS-730x534.jpg.webp 730w, https:\/\/www.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/08\/Customize-the-Markup-and-CSS-1460x1069.jpg.webp 1460w, https:\/\/www.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/08\/Customize-the-Markup-and-CSS-784x574.jpg.webp 784w, https:\/\/www.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/08\/Customize-the-Markup-and-CSS-1568x1148.jpg.webp 1568w, https:\/\/www.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/08\/Customize-the-Markup-and-CSS-877x642.jpg.webp 877w\" data-sizes=\"(max-width: 1600px) 100vw, 1600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1600px; --smush-placeholder-aspect-ratio: 1600\/1171;\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">In this step, you\u2019ll write the markup that WordPress renders wherever the block is used. Lazy Blocks lets you write it in plain HTML or in PHP.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">To pull in what an editor typed into your controls, use the plugin\u2019s Handlebars-style output: reference each control by its name (slug) in double curly braces. (E.g., \u201c{{button-text}}\u201d)<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 5: Add the block<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Once you\u2019ve saved the block, it should appear in the list of available blocks in the WordPress editor, right alongside the defaults.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Simply click the \u201c+\u201d and then find the new block by its name.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Once added, you should see the fields and options you configured, ready to fill in.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That\u2019s it!<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">You can now use your custom block, adding it to pages, posts, or wherever you need it.<\/p>\n\n\n\n<h2 id=\"custom\" class=\"wp-block-heading\">How to create custom WordPress blocks from scratch<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">If you want to dive in deeper and really learn how blocks work under the hood, you can build one from scratch with the <a href=\"https:\/\/developer.wordpress.org\/block-editor\/reference-guides\/packages\/packages-create-block\/\" target=\"_blank\" rel=\"noopener\">create-block tool<\/a>, the officially supported scaffolding tool from the WordPress project. It generates the PHP, JavaScript, and CSS for a working block, plus a modern build setup with no configuration.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Fair warning: This is an advanced workflow. It will require you to dig into the command line.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">You\u2019ll need to understand PHP, JavaScript, HTML, and CSS.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Don\u2019t say we didn\u2019t warn ya!<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step #1: Set up Node.js, npm, and a local WordPress installation<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Before we can use create-block, we\u2019ll need to have the right setup and access.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Here are the prerequisites:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/developer.wordpress.org\/block-editor\/getting-started\/devenv\/\" target=\"_blank\" rel=\"noopener\">A local WordPress development environment<\/a><\/li>\n\n\n\n<li>Terminal or command line setup<\/li>\n\n\n\n<li><a href=\"https:\/\/nodejs.org\/en\/download\" target=\"_blank\" rel=\"noopener\">Node.js and npm<\/a> \u2014 create-block requires Node.js version 20.10.0 or above and npm version 10.2.3 or above<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">You may also want to use <a href=\"https:\/\/github.com\/nvm-sh\/nvm\" target=\"_blank\" rel=\"noopener\">nvm<\/a> (Node Version Manager) to install or update a compatible version of Node.js.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">With this setup, we will use npm\u2019s command \u201cnpx\u201d to execute the create-block package directly from the npm registry, with nothing to install permanently.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step #2: Run the create-block package<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Now, the easy step.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">From the terminal, navigate to the \/wp-content\/plugins directory of your website on your local machine.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Then run the create-block package using npx:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" width=\"1600\" height=\"693\" data-src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/08\/Run-the-create-block-Package.jpg.webp\" alt=\"Run the create-block Package\" class=\"wp-image-41448 lazyload\" data-srcset=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/08\/Run-the-create-block-Package.jpg.webp 1600w, https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2023\/08\/Run-the-create-block-Package-300x130.jpg 300w, https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2023\/08\/Run-the-create-block-Package-1024x444.jpg 1024w, https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2023\/08\/Run-the-create-block-Package-768x333.jpg 768w, https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2023\/08\/Run-the-create-block-Package-1536x665.jpg 1536w, https:\/\/www.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/08\/Run-the-create-block-Package-600x260.jpg.webp 600w, https:\/\/www.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/08\/Run-the-create-block-Package-1200x520.jpg.webp 1200w, https:\/\/www.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/08\/Run-the-create-block-Package-730x316.jpg.webp 730w, https:\/\/www.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/08\/Run-the-create-block-Package-1460x632.jpg.webp 1460w, https:\/\/www.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/08\/Run-the-create-block-Package-784x340.jpg.webp 784w, https:\/\/www.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/08\/Run-the-create-block-Package-1568x679.jpg.webp 1568w, https:\/\/www.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/08\/Run-the-create-block-Package-877x380.jpg.webp 877w\" data-sizes=\"(max-width: 1600px) 100vw, 1600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1600px; --smush-placeholder-aspect-ratio: 1600\/693;\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><code>npx @wordpress\/create-block@latest my-custom-block<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The slug you provide sets the folder name and the block\u2019s internal name. The package will then run through the process of setting up what\u2019s known as the \u201cblock scaffolding\u201d: it registers all of the relevant elements, spins up the correct file and directory structure, and generates default code for the entire block to be both editable and usable.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step #3: Activate the plugin<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The new block itself will take the form of a plugin. That\u2019s the recommended way to package a block, because a block that lives in a plugin keeps working even when you switch themes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Once the create-block package is complete, you\u2019ll need to pop over to WP admin.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Go to the Plugins page and activate the new plugin that it created, which should have the name of the block that you used in your npx command.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step #4: Customize the block code<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">You\u2019ll customize the content and functionality of the block within the <b>\/src\/<\/b> folder inside the plugin directory.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The generated source files separate block registration from the editor and front-end output code:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" width=\"1600\" height=\"871\" data-src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/08\/Customize-the-Block-Code.jpg.webp\" alt=\"Customize the Block Code\" class=\"wp-image-41449 lazyload\" data-srcset=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/08\/Customize-the-Block-Code.jpg.webp 1600w, https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2023\/08\/Customize-the-Block-Code-300x163.jpg 300w, https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2023\/08\/Customize-the-Block-Code-1024x557.jpg 1024w, https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2023\/08\/Customize-the-Block-Code-768x418.jpg 768w, https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2023\/08\/Customize-the-Block-Code-1536x836.jpg 1536w, https:\/\/www.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/08\/Customize-the-Block-Code-600x327.jpg.webp 600w, https:\/\/www.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/08\/Customize-the-Block-Code-1200x653.jpg.webp 1200w, https:\/\/www.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/08\/Customize-the-Block-Code-730x397.jpg.webp 730w, https:\/\/www.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/08\/Customize-the-Block-Code-1460x795.jpg.webp 1460w, https:\/\/www.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/08\/Customize-the-Block-Code-784x427.jpg.webp 784w, https:\/\/www.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/08\/Customize-the-Block-Code-1568x854.jpg.webp 1568w, https:\/\/www.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/08\/Customize-the-Block-Code-877x477.jpg.webp 877w\" data-sizes=\"(max-width: 1600px) 100vw, 1600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1600px; --smush-placeholder-aspect-ratio: 1600\/871;\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Notice that the registerBlockType function is set to handle both the block editor inputs (\u201cedit\u201d) and the front-end display (\u201csave\u201d).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This is just scratching the surface of building a functional block.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">You\u2019ll likely want to dig into the complete documentation for writing functional blocks using the <a href=\"https:\/\/developer.wordpress.org\/block-editor\/reference-guides\/block-api\/\" target=\"_blank\" rel=\"noopener\">WordPress Block API<\/a>. Once you have the basics down, you can pull in additional dependencies, tap into outside data sources, and just about anything else your heart desires.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">One practical tip: test custom block code somewhere safe before it touches a live site. A local install works, and so does a staging copy. If your site runs on <a href=\"https:\/\/www.dreamhost.com\/wordpress\/managed\/\" target=\"_blank\" rel=\"noopener\">DreamPress<\/a>, DreamHost\u2019s managed WordPress hosting, every plan includes 1-click staging for exactly this kind of experiment.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step #5: Add the block from the editor<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">With the activated plugin, you can add your block to any page or post from the block editor.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Access it by using the \u201c+\u201d button or \u201c\/\u201d command, just like any other block.<\/p>\n\n\n\n<h2 id=\"faq\" class=\"wp-block-heading\">FAQs about WordPress blocks<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">How do I add a block in WordPress?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Open a page or post in the editor and click the \u201c+\u201d button, or type \u201c\/\u201d followed by the block\u2019s name in an empty paragraph (like \u201c\/image\u201d). Once a block is in place, you can drag it anywhere in the content or adjust it from its toolbar.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Where do I find the WordPress block editor?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The block editor is the default WordPress editor: log in to wp-admin and edit any post or page. There\u2019s nothing to install, since every WordPress version from 5.0 (December 2018) onward includes it. If you see one big text box instead of blocks, the Classic Editor plugin is probably active on your site.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Do I need the Gutenberg plugin to use blocks?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">No. \u201cGutenberg\u201d is the codename for the project that builds the block editor, and its stable features ship inside every WordPress release. The separate <a href=\"https:\/\/wordpress.org\/plugins\/gutenberg\/\" target=\"_blank\" rel=\"noopener\">Gutenberg plugin<\/a> is a beta channel for early adopters who want to test experimental features before they land in core. Most sites shouldn\u2019t run it.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Can I still use the classic editor?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Yes. The free <a href=\"https:\/\/wordpress.org\/plugins\/classic-editor\/\" target=\"_blank\" rel=\"noopener\">Classic Editor plugin<\/a> is an official plugin maintained by the WordPress team, and it\u2019s active on more than 8 million sites as of August 2026. The caveat: it doesn\u2019t work with block themes, which rely on blocks. It\u2019s a solid bridge for workflows that depend on the old editor, but don\u2019t build a new site around it.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Which is better: the block editor or a page builder like Elementor?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">For most sites, start with the block editor. It\u2019s built into WordPress, it\u2019s free, and the skills transfer to any WordPress site you ever touch. Elementor is a third-party drag-and-drop website builder plugin with a free version and a paid Pro tier; it offers deeper design control, but it uses its own editor and widget system rather than core blocks, and it\u2019s one more plugin to maintain. Reach for a page builder only when you need design precision the block editor can\u2019t give you.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">What\u2019s the difference between a block and a pattern?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">A block is a single element: one paragraph, one image, one button. A pattern is a pre-arranged group of blocks you can insert as a ready-made layout. Synced patterns (WordPress 6.3 renamed reusable blocks to patterns) go a step further: edit a synced pattern once, and the change appears everywhere it\u2019s used. Our guide to <a href=\"https:\/\/www.dreamhost.com\/blog\/wordpress-block-patterns\/\" target=\"_blank\" rel=\"noopener\">WordPress block patterns<\/a> covers them in detail.<\/p>\n\n\n\n<h2 id=\"summary\" class=\"wp-block-heading\">The sky\u2019s the limit<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Alright, we went from basics to advanced with this one. The recap: blocks are the standard way to build in WordPress, the core library covers most everyday needs, a block builder plugin like Lazy Blocks lets you define fields visually while writing the output in HTML or PHP, and create-block is there when you\u2019re ready to write your own.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Between those options, your WordPress site can grow into just about whatever you want it to be. One block at a time.<\/p>\n\n\n\n\n\n<div\n\tclass=\"article-cta-shared article-cta-small\"\n>\n    <div class=\"tr-img-wrap-outer jsLoading\"><img decoding=\"async\" class=\"js-img-lazy \" src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/themes\/blog2018\/assets\/img\/lazy-loading-transparent.webp\" data-srcset=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/themes\/blog2018\/assets\/img\/article-small-ad-cta-placeholder.webp 1x, https:\/\/www.dreamhost.com\/blog\/wp-content\/themes\/blog2018\/assets\/img\/article-small-ad-cta-placeholder-x2.webp 2x\"  alt=\"Ad background image\" \/><\/div>\n\n\n\n\n  <div class=\"content-btm\">\n    <h2\n      class=\"h2--md\"\n    >\n      WordPress + DreamHost\n    <\/h2>\n    <p\n      class=\"p--md\"\n    >\n      Our automatic updates and strong security defenses take server management off your hands so you can focus on creating a great website.\n    <\/p>\n\n            <a\n            href=\"https:\/\/www.dreamhost.com\/wordpress\/\"\n                        class=\"btn btn--white-outline btn--sm btn--round\"\n                                    target=\"_blank\"\n            rel=\"noopener noreferrer\"\n            >\n                            Check Out Plans                    <\/a>\n\n  <\/div>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>Think about a bin of Legos. Every castle, spaceship, and questionable duck starts from the same pile of snap-together pieces. Modern WordPress works exactly the same way. WordPress blocks are the individual pieces of content \u2014 paragraphs, images, buttons, videos \u2014 that you stack, rearrange, and style to build every page and post in the [&hellip;]<\/p>\n","protected":false},"author":1062,"featured_media":91317,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_yoast_wpseo_opengraph-title":"WordPress Blocks: What They Are & How to Use It - DreamHost","_yoast_wpseo_opengraph-description":"WordPress blocks are the building pieces\u2014paragraphs, images, buttons\u2014that make up every WordPress page. Learn what they are and how to create custom ones.","_yoast_wpseo_twitter-title":"WordPress Blocks: What They Are & How to Use It - DreamHost","_yoast_wpseo_twitter-description":"WordPress blocks are the building pieces\u2014paragraphs, images, buttons\u2014that make up every WordPress page. Learn what they are and how to create custom ones.","toc_headlines":"[[\"definition\",\"What are WordPress blocks?\"],[\"blocks\",\"What blocks does WordPress already have?\"],[\"create\",\"How to create custom blocks with a WordPress plugin\"],[\"custom\",\"How to create custom WordPress blocks from scratch\"],[\"faq\",\"FAQs about WordPress blocks\"],[\"summary\",\"The sky\u2019s the limit\"]]","hide_toc":false,"show_updated_at":"1","footnotes":""},"categories":[13119,12852,696],"tags":[],"class_list":["post-41438","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-getting-started","category-website-design","category-wordpress"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>WordPress Blocks: What They Are &amp; How to Use It - DreamHost<\/title>\n<meta name=\"description\" content=\"WordPress blocks are the building pieces\u2014paragraphs, images, buttons\u2014that make up every WordPress page. Learn what they are and how to create custom ones.\" \/>\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.dreamhost.com\/blog\/how-to-use-wordpress-blocks\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"WordPress Blocks: What They Are &amp; How to Use It - DreamHost\" \/>\n<meta property=\"og:description\" content=\"WordPress blocks are the building pieces\u2014paragraphs, images, buttons\u2014that make up every WordPress page. Learn what they are and how to create custom ones.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dreamhost.com\/blog\/how-to-use-wordpress-blocks\/\" \/>\n<meta property=\"og:site_name\" content=\"DreamHost Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/DreamHost\/\" \/>\n<meta property=\"article:published_time\" content=\"2023-08-10T14:00:06+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-08-27T03:20:48+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2023\/08\/How-To-Use-WordPress-Blocks-Social-Image.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"628\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Jason Cosper\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:title\" content=\"WordPress Blocks: What They Are &amp; How to Use It - DreamHost\" \/>\n<meta name=\"twitter:description\" content=\"WordPress blocks are the building pieces\u2014paragraphs, images, buttons\u2014that make up every WordPress page. Learn what they are and how to create custom ones.\" \/>\n<meta name=\"twitter:creator\" content=\"@dreamhost\" \/>\n<meta name=\"twitter:site\" content=\"@dreamhost\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jason Cosper\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 minutes\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"WordPress Blocks: What They Are & How to Use It - DreamHost","description":"WordPress blocks are the building pieces\u2014paragraphs, images, buttons\u2014that make up every WordPress page. Learn what they are and how to create custom ones.","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.dreamhost.com\/blog\/how-to-use-wordpress-blocks\/","og_locale":"en_US","og_type":"article","og_title":"WordPress Blocks: What They Are & How to Use It - DreamHost","og_description":"WordPress blocks are the building pieces\u2014paragraphs, images, buttons\u2014that make up every WordPress page. Learn what they are and how to create custom ones.","og_url":"https:\/\/www.dreamhost.com\/blog\/how-to-use-wordpress-blocks\/","og_site_name":"DreamHost Blog","article_publisher":"https:\/\/www.facebook.com\/DreamHost\/","article_published_time":"2023-08-10T14:00:06+00:00","article_modified_time":"2026-08-27T03:20:48+00:00","og_image":[{"width":1200,"height":628,"url":"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2023\/08\/How-To-Use-WordPress-Blocks-Social-Image.jpg","type":"image\/jpeg"}],"author":"Jason Cosper","twitter_card":"summary_large_image","twitter_title":"WordPress Blocks: What They Are & How to Use It - DreamHost","twitter_description":"WordPress blocks are the building pieces\u2014paragraphs, images, buttons\u2014that make up every WordPress page. Learn what they are and how to create custom ones.","twitter_creator":"@dreamhost","twitter_site":"@dreamhost","twitter_misc":{"Written by":"Jason Cosper","Est. reading time":"11 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dreamhost.com\/blog\/how-to-use-wordpress-blocks\/#article","isPartOf":{"@id":"https:\/\/www.dreamhost.com\/blog\/how-to-use-wordpress-blocks\/"},"author":{"name":"Jason Cosper","@id":"https:\/\/www.dreamhost.com\/blog\/#\/schema\/person\/696d1ca9f2e23c846e02e04944e8fca4"},"headline":"How To Use WordPress Blocks (+ How To Create Your Own!)","datePublished":"2023-08-10T14:00:06+00:00","dateModified":"2026-08-27T03:20:48+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dreamhost.com\/blog\/how-to-use-wordpress-blocks\/"},"wordCount":2669,"publisher":{"@id":"https:\/\/www.dreamhost.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.dreamhost.com\/blog\/how-to-use-wordpress-blocks\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/08\/blog-hero-how-to-use-wordpress-blocks-dreamops-bb4ec647b6342c9ec2ac57a5.webp","articleSection":["Getting Started","Website Design","WordPress"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.dreamhost.com\/blog\/how-to-use-wordpress-blocks\/","url":"https:\/\/www.dreamhost.com\/blog\/how-to-use-wordpress-blocks\/","name":"WordPress Blocks: What They Are & How to Use It - DreamHost","isPartOf":{"@id":"https:\/\/www.dreamhost.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.dreamhost.com\/blog\/how-to-use-wordpress-blocks\/#primaryimage"},"image":{"@id":"https:\/\/www.dreamhost.com\/blog\/how-to-use-wordpress-blocks\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/08\/blog-hero-how-to-use-wordpress-blocks-dreamops-bb4ec647b6342c9ec2ac57a5.webp","datePublished":"2023-08-10T14:00:06+00:00","dateModified":"2026-08-27T03:20:48+00:00","description":"WordPress blocks are the building pieces\u2014paragraphs, images, buttons\u2014that make up every WordPress page. Learn what they are and how to create custom ones.","breadcrumb":{"@id":"https:\/\/www.dreamhost.com\/blog\/how-to-use-wordpress-blocks\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dreamhost.com\/blog\/how-to-use-wordpress-blocks\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dreamhost.com\/blog\/how-to-use-wordpress-blocks\/#primaryimage","url":"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/08\/blog-hero-how-to-use-wordpress-blocks-dreamops-bb4ec647b6342c9ec2ac57a5.webp","contentUrl":"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/08\/blog-hero-how-to-use-wordpress-blocks-dreamops-bb4ec647b6342c9ec2ac57a5.webp","width":1536,"height":1024},{"@type":"BreadcrumbList","@id":"https:\/\/www.dreamhost.com\/blog\/how-to-use-wordpress-blocks\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.dreamhost.com\/blog\/"},{"@type":"ListItem","position":2,"name":"How To Use WordPress Blocks (+ How To Create Your Own!)"}]},{"@type":"WebSite","@id":"https:\/\/www.dreamhost.com\/blog\/#website","url":"https:\/\/www.dreamhost.com\/blog\/","name":"DreamHost Blog","description":"","publisher":{"@id":"https:\/\/www.dreamhost.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dreamhost.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.dreamhost.com\/blog\/#organization","name":"DreamHost","url":"https:\/\/www.dreamhost.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dreamhost.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/dhblog.dream.press\/blog\/wp-content\/uploads\/2019\/01\/dh_logo-blue-2.png","contentUrl":"https:\/\/dhblog.dream.press\/blog\/wp-content\/uploads\/2019\/01\/dh_logo-blue-2.png","width":1200,"height":168,"caption":"DreamHost"},"image":{"@id":"https:\/\/www.dreamhost.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/DreamHost\/","https:\/\/x.com\/dreamhost","https:\/\/www.instagram.com\/dreamhost\/","https:\/\/www.linkedin.com\/company\/dreamhost\/","https:\/\/www.youtube.com\/user\/dreamhostusa"]},{"@type":"Person","@id":"https:\/\/www.dreamhost.com\/blog\/#\/schema\/person\/696d1ca9f2e23c846e02e04944e8fca4","name":"Jason Cosper","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2022\/02\/IMG_4807-scaled.jpeg","url":"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2022\/02\/IMG_4807-scaled.jpeg","contentUrl":"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2022\/02\/IMG_4807-scaled.jpeg","caption":"Jason Cosper"},"description":"Jason is DreamHost\u2019s WordPress Product Advocate, based out of Bakersfield, CA. He is currently working on making our DreamPress product even better. In his free time, he likes to curl up on the couch and watch scary movies with his wife Sarah and three very small dogs. Follow him on Twitter.","url":"https:\/\/www.dreamhost.com\/blog\/author\/jasoncosper\/"}]}},"lang":"en","translations":{"en":41438,"es":41465,"de":52846,"pt":54873,"pl":54880,"ru":54916,"uk":54919,"it":68363,"fr":70312,"nl":70333},"pll_sync_post":{},"_links":{"self":[{"href":"https:\/\/www.dreamhost.com\/blog\/wp-json\/wp\/v2\/posts\/41438","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dreamhost.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dreamhost.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dreamhost.com\/blog\/wp-json\/wp\/v2\/users\/1062"}],"version-history":[{"count":2,"href":"https:\/\/www.dreamhost.com\/blog\/wp-json\/wp\/v2\/posts\/41438\/revisions"}],"predecessor-version":[{"id":91325,"href":"https:\/\/www.dreamhost.com\/blog\/wp-json\/wp\/v2\/posts\/41438\/revisions\/91325"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dreamhost.com\/blog\/wp-json\/wp\/v2\/media\/91317"}],"wp:attachment":[{"href":"https:\/\/www.dreamhost.com\/blog\/wp-json\/wp\/v2\/media?parent=41438"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dreamhost.com\/blog\/wp-json\/wp\/v2\/categories?post=41438"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dreamhost.com\/blog\/wp-json\/wp\/v2\/tags?post=41438"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}