Columns block
The Columns block creates a multi-column layout inside a post or page. Each column can hold any other blocks — paragraphs, images, lists, even nested theme blocks.
Provided by the flexweg-blocks must-use plugin.
Inserting
/columns in the inserter. The block inserts with two equal-width columns as the default. Each column starts with an empty paragraph.
Editing
Each column is a regular block container — click inside one and use any of the inserter / typing / paste workflows you'd use elsewhere. The column's content is independent.
The columns block's inspector (right sidebar, Block tab) lets you:
- Column count (2-6) — adding columns inserts new empty columns at the right; removing columns merges their content into the previous column
- Per-column width — drag the divider in the editor preview to resize, or enter widths as percentages in the inspector
- Stack on mobile — toggle whether columns stack vertically below a breakpoint (default: yes, breakpoint at 768px)
- Gap — gap between columns (default: 1.5rem)
Markdown round-trip
The block is stored as an attrs marker at the top:
<div data-cms-block="core/columns" data-attrs="<base64-{count: 3, widths: [40, 30, 30]}>"></div>
Each column's content is then nested as Markdown within <div data-cms-block-column="0"> markers. The publisher's filter resolves the layout into responsive CSS-grid HTML at publish time.
Published HTML
<div class="cms-columns" style="display: grid; grid-template-columns: 40% 30% 30%; gap: 1.5rem;">
<div class="cms-columns-col">
<p>Column 1 content</p>
</div>
<div class="cms-columns-col">
<p>Column 2 content</p>
</div>
<div class="cms-columns-col">
<p>Column 3 content</p>
</div>
</div>
Mobile responsive (when stack-on-mobile is on):
@media (max-width: 768px) {
.cms-columns {
grid-template-columns: 1fr !important;
}
}
This CSS is injected once into the page's <head> (deduplicated across multiple Columns blocks on the same page).
Limitations
- No nested Columns block in v1 — you can have core / theme blocks inside a column, but not another Columns block. Nesting would complicate the inspector + publish-time render.
- No row/column reordering by drag — columns can be added or removed via the inspector, but not reordered. Workaround: cut/paste content between columns.
- No equal-height columns by default — columns size to their content. Themes can override with CSS targeting
.cms-columns > .cms-columns-col.
Continue
- Core blocks — what to put inside columns
- Custom HTML — for layouts the Columns block can't do
- flexweg-blocks — full plugin reference