Skip to main content

Accordion

Collapsible panels — an FAQ, a spec sheet, a set of long answers. WordPress core ships a Details block for a single disclosure; the Unyson+ Accordion is the full version: multiple panels with icons, numbering, deep-links, an Expand / Collapse all control, and optional FAQ structured data.

Like every block in the library, it is a second authoring surface, not a second renderer. The canvas preview and the front end are both produced by the accordion element — the same PHP that runs in the page builder — so what you configure in the editor is exactly what ships.

The Accordion block rendered on the front end — a three-item FAQ with the first panel open and Expand / Collapse All controls

Add it

In the editor, open the block inserter (+), search “Accordion”, and choose the one under the Unyson+ category (described as “Collapsible panels with icons, numbering, deep links and FAQ schema”). It inserts empty — add your first panel in the block settings.

Searching “accordion” in the block inserter shows the Unyson+ Accordion block

Configure it

Select the block and open the Settings (block) tab. The whole sidebar is generated from the element’s own option schema, so it stays in step with the page builder — there is no hand-written, block-only control that can drift.

The Accordion block settings sidebar — Accordion Items, Title Tag, Icon Style and more

Start under Accordion Items: click Add to create a panel, give it a Title (the clickable header) and Content (rich text, images, other shortcodes), and optionally flip Open by Default to force that one item open. Drag to reorder.

Options

Content

OptionWhat it does
Accordion Items (tabs)The panels. Each item has a Title, a rich-text Content body, and an Open by Default switch that overrides Initially Open for that single item. Empty by default — add at least one.

Layout

OptionWhat it does
Title Tag (title_tag)Heading level for every item title — H2H6 (default H3). Match the page outline; a real heading is always emitted so screen readers can navigate by it.
Icon Style (icon_style)The open/closed indicator: Plus / Minus, Plus / X, Chevron, Arrow, No Icon, or Custom (text/emoji). Default Plus / Minus.
Icon Position (icon_position)Left or Right of the title. Right is the common FAQ pattern.
Custom Closed / Open Text (icon_closed_text, icon_open_text)The text or emoji indicator when Icon Style is Custom — e.g. + / , / , or 👇 / 👆.
Item Numbering (numbering)Prefix titles with a number/letter: 1, 2, 3, 01, 02, 03, a, b, c, A, B, C, i, ii, iii, I, II, III, Q1, Q2, Q3, or a Custom token pattern ({n}, {0n}, {a}/{A}, {i}/{I} — e.g. Step {n}:).
Start Number (numbering_start)The number the first item gets (default 1) — useful to continue a list split across two accordions.
Item Spacing (item_spacing)Vertical gap between items, from the theme spacing presets.
Title Alignment (title_alignment)Left, Center, or Right for the title row. The icon stays at its chosen position.

Behaviour

OptionWhat it does
Initially Open (initially_open)Which panels start expanded: First Item, None (all closed), or All Open. Default First.
Collapsible (collapsible)Allow all panels to be closed at once. Off = one item always stays open.
Multiple Open (multiple_open)Let several panels be open together. Off = opening one closes the rest (classic accordion).
URL Hash Deep-Linking (hash_linking)Open the panel whose ID matches the URL hash and update the hash on toggle, so a link like …/page/#accordion-…-panel-3 jumps straight to an answer. Default Yes.
Expand / Collapse All (show_expand_collapse_all)Add two buttons above the accordion that open or close every item at once. Most useful with Multiple Open on.
FAQ Rich Snippet (faq_schema)Emit FAQPage JSON-LD so search engines can show the accordion as an expandable FAQ result. Use on a genuine Q&A list, and only one accordion per page.

Styling

OptionWhat it does
Accordion Style (accordion_style)The visual language: Bordered (one rounded box), Separated (individual cards), Flush (hairline dividers), Filled (tinted title bars), Ghost (borderless with an accent underline). Default Bordered.
Corner Radius (corner_radius)None, Small, Medium, Large.
Elevation (elevation)Shadow depth — None, Subtle, Raised (most visible on Separated / Filled).
Open-Item Accent (active_accent)Accent colour for the open item — a full-width underline plus a soft tint on its title.
Title Hover Feedback (title_hover)Shade a title bar on hover so it reads as clickable. Default Yes.
Font Size (font_size_preset)A named size from the framework presets.
Colours (tab_title_color, title_bg_color, tab_content_color, content_bg_color, icon_closed_color, icon_open_color)Per-part colour pickers for the title text/background, content text/background, and the toggle icon in each state.

WordPress block supports

Beyond the schema controls, the block opts into core features, so these come from WordPress itself and inherit the site’s design system published to theme.json:

  • Alignment — supports Wide and Full width.
  • DimensionsMargin and Padding via core’s Dimensions panel.
  • Global Styles — colours, typography and spacing resolve to the theme’s presets.

Sample content

The demo above is three FAQ panels with the first open, the Expand / Collapse controls on, and FAQ schema enabled. You normally build this in the Settings sidebar, but a block is just markup — this is what it saves as (a single upOptions object keyed by the same paths the page builder uses):

<!-- wp:unysonplus/accordion {"upOptions":{
"tabs":[
{"tab_title":"How do I install UnysonPlus?","tab_content":"<p>Upload <code>unysonplus.zip</code> under Plugins &rarr; Add New &rarr; Upload, activate it, and add the extensions you need.</p>","is_open":"yes"},
{"tab_title":"Is it really free?","tab_content":"<p>Yes &mdash; every extension is free, with no pro tier.</p>","is_open":"no"},
{"tab_title":"Does it work with any theme?","tab_content":"<p>The framework runs on any theme, and pairs with the UnysonPlus parent theme.</p>","is_open":"no"}
],
"faq_schema":"yes",
"show_expand_collapse_all":"yes"
}} /-->

A freshly inserted block stores only what you change (upOptions: {}); the element’s declared defaults fill in the rest at render time.

Accessibility

The accordion follows the WAI-ARIA disclosure pattern: each title is a real button inside the heading level you choose (title_tag), with aria-expanded kept in sync and aria-controls pointing at its panel. Enter/Space toggle, and the panel gets a matching id so deep-links and screen readers resolve to the right content. Pick a title_tag that fits the page outline (don’t skip levels) and the accordion stays navigable by heading.

Front-end markup

The element renders a wrapper whose classes encode every visual choice, so a theme can target any of them:

<div class="accordion ac-xxxx accordion-icon-plus-minus accordion-icon-left
accordion-title-align-left accordion-style-bordered accordion-radius-md
accordion-elev-none accordion-hover">
<div class="accordion-controls">
<button class="accordion-controls__btn accordion-controls__btn--expand">Expand All</button>
<button class="accordion-controls__btn accordion-controls__btn--collapse">Collapse All</button>
</div>
<div class="accordion-item">
<h3 class="accordion-title ui-state-active">
<span class="accordion-icon"></span>
<span class="accordion-title-text">How do I install UnysonPlus?</span>
</h3>
<div class="accordion-content"></div>
</div>

</div>

Relationship to the accordion element

The block and the page builder’s accordion element are two doors onto the same code. Anything documented for the element — its options, markup, and behaviour — is true here too; the block simply exposes those options as a generated inspector and previews the result live in the editor.