Writing with Content Widgets: the blocks I actually use
A field guide to the nineteen blocks the Content Widgets plugin adds: which ones earn a place in a real article, when steps beat tabs, what the product box is honest about, and how AI drafts a widget-heavy post.

Articles are more than paragraphs. Tutorials need steps and warnings, reviews need spec tables and pros/cons, and every long post needs signposts. On WordPress that meant shortcodes or a page builder. On EmDash it is nineteen block types from the Content Widgets plugin - and this article is built from them, so every example below is running code, not a mockup.
The install walkthrough already covers getting the plugin onto a site. This is the other half: which blocks I reach for, when one beats another, and where an AI assistant helps draft widget-heavy posts without flattening them into plain text.
The five I reach for first
- Notice - the colored callout carrying every warning and tip in this article; four kinds, a sentence or two of body
- Steps - the numbered procedure; anything with an order gets this instead of a bulleted list
- Code - filename, language tag, server-rendered so there is no flash of unstyled text
- Cards - related-reading grids with icons; how most posts on this site end
- Facts - the spec table: label/value pairs for versions, plans, requirements
Structure and signposts
Long posts need scaffolding before decoration. Prose blocks carry the paragraphs and headings, the table of contents above built itself from them, and the series block chains related posts so a reader can walk the set in order. The divider is the quiet one: a line, dots or space, no other fields.
Teaching blocks
Steps, checklist, accordion and tabs overlap on paper but not in use. Steps when order matters, checklist for unordered must-dos, accordion for questions the reader may skip, and tabs when one slot has to hold alternatives - like the two install paths below.
Admin, Plugins, Registry - search for Content Widgets, install, approve. The registry path keeps the plugin sandboxed and updates arrive through the same UI.
Clone the repo and add it as a file dependency, registered under sandboxed: or in-process. Pick this when you want to read or patch the code - it is the same package either way.
That was a real widget_tabs block: one slot, two alternatives, arrow-key navigation when JavaScript is on, anchored sections when it is not. The accordion works the same way for content a reader might skip - see the FAQ at the bottom.
Callouts and proof
Two blocks carry persuasion. The notice is the callout, and the quote block is for reader-voice lines that would look silly as a paragraph:
Notices for warnings, quotes for voices. Keep the two separate and the article stays honest.
Anatomy of a block
- This table
- A widget_facts block: title plus a label/value repeater
- Rendered
- Server-side, straight into the HTML
- Client JavaScript
- None for this one
- Editor shape
- Fields in a block form, not markup you type

Media and embeds
Images carry a caption and a wide flag - the screenshots in this post are widget_image blocks. The YouTube block is a facade: a thumbnail and a link until the visitor chooses to play, with a site setting that swaps the iframe to youtube-nocookie.com. Code blocks take a filename and a language:
plugins: [
cloudflareEmail({ from: { email: "dragos@emdashhq.com", name: "EmDash HQ" } }),
siteScriptsPlugin,
],
sandboxed: [contactFormsPlugin, widgetsPlugin],
sandboxRunner: sandbox(),The embed block covers the rest - a URL, a title and an aspect ratio for anything that needs a plain iframe.
The money blocks, honestly
Cards and buttons are the traffic directors - most posts here end in a cards grid. The product box is the one block that can look like an ad, so the plugin puts an affiliate disclosure field in its settings and prints it small inside the box. This is a real product box reviewing the thing it runs on:
This post contains affiliate links. If you buy through them, the site may earn a commission at no extra cost to you.
Cloudflare Workers Paid
$5/monthThe $5-a-month tier this site runs on. You need it for sandboxed registry plugins like the one this post is about - the honest price of the sandbox.
Pros
- Sandboxed plugins actually run
- D1 and R2 included for a site this size
- Still cheaper than my old shared hosting
Cons
- Not free like the Workers tier was
- The sandbox ties you to Workers


Where AI actually helps
Worth automating
- Outline to blocks: paste a markdown outline and let it draft the widget body - steps for procedures, facts for specs, accordion for the FAQ
- Shortcode cleanup: it converts WordPress shortcode soup into the matching widget blocks faster than any find-and-replace
- FAQ drafting: feed it a doc or a comment thread and keep the five questions that keep recurring
- Alt text and captions: first drafts for every figure, then fix the three that matter by hand
Do not automate
- Ratings and pros/cons: that is your judgment - a plausible four stars you did not earn is just a nicer lie
- Links: it invents plausible URLs, and every href it writes gets clicked by a human. That human is you, first
- The prose: let it place blocks, not write paragraphs - the voice flattens within two sections
Common questions
FAQ
Do the blocks work on pages, not just posts?
Yes - widget types can be allowed in any blocks field. This site's pages take them; what gets allowed is a schema decision, not a plugin limitation.
How heavy is the output?
Server-rendered and small. The only client JavaScript covers tabs, the accordion toggle and the YouTube facade - everything else is plain HTML and CSS.
Can I restyle them?
They take the site's design tokens and ship their own scoped styles. The components live in the package's site/ directory, so copying and editing them is the supported path.
What happens if I uninstall the plugin?
The block data stays in your content; the renderers stop. Types are declared per collection, so you can also remove a single widget from the picker without touching the rest.
Keep going
The links from this guide
- Content Widgets on the registry
Install, changelog and the block list
- The live gallery
All nineteen blocks on one page
- The install walkthrough
Registry install and wiring the renderers
- Build a custom EmDash theme
Where the design tokens these blocks inherit come from