Accordion Blocks


Accordion Blocks is a simple plugin that adds a Gutenberg block for adding accordion drop-downs to your pages.

The accordions should blend seamlessly with your theme. However, you may want to add custom styles to your theme.


  • Adds a Gutenberg block for adding accordions to your site.
  • Supports multiple accordions with individual settings for each accordion item.
  • Fully responsive.
  • Support for item IDs and direct links.
  • Supports nesting accordions.
  • Accessible (for users requiring tabbed keyboard navigation control).

Optional Features

  • Open individual accordion items by default.
  • Disable auto closing of accordion items.
  • Manually close items by clicking the title again.
  • Scroll page to title when it’s clicked open (including setting a scroll offset position).
  • Set the HTML heading tag for the title element (h1–h6, button).
  • Set defaults to be applied to all new accordion items or reset a specific accordion item to the defaults.
  • Supports adding custom block styles using wp.blocks.registerBlockStyle.


The plugin will ultimately output following HTML (simplified for this example):

<div class="wp-block-pb-accordion-item c-accordion__item js-accordion-item" data-initially-open="false" data-click-to-close="true" data-auto-close="true" data-scroll="false" data-scroll-offset="0">
    <h2 id="at-76840" class="c-accordion__title js-accordion-controller" tabindex="0" role="button" aria-controls="ac-76840" aria-expanded="false">
        Title with H2 tag
    <div id="ac-76840" class="c-accordion__content" style="display:none" aria-hidden="true">

Custom CSS

You can use the following CSS classes to customize the look of the accordion.

.c-accordion__item {} /* The accordion item container */ {} /* is-open is added to open accordion items */ {} /* is-read is added to accordion items that have been opened at least once */
.c-accordion__title {} /* An accordion item title */
.c-accordion__title--button {} /* An accordion item title that is using a `<button>` tag */
.c-accordion__title:hover {} /* To modify the style when hovering over an accordion item title */
.c-accordion__title:focus {} /* To modify the style when an accordion item title currently has broswer focus */
.c-accordion__content {} /* An accordion item content container */


  • Accordion block settings sidebar
  • Accordion block in the editor


This plugin provides 1 block.

  • Accordion Item


  1. Upload the ‘accordion-blocks’ folder to the ‘/wp-content/plugins/’ directory.
  2. Activate the plugin through the Plugins menu in WordPress.
  3. Add the accordions to your content.


Can I change all my existing accordion items to the defaults?

No. It is not possible to change all your accordion item’s settings (within the same page or across multiple pages) to the defaults.

Although I would like to offer this feature, based on my research it would require a significant amount of development time that I am unable to devote to a free plugin. If you are a developer and would be interested in helping implement a feature like that, please let me know.

Why isn’t the JavaScript file loading on my site?

This is most likely caused by a poorly coded theme. This plugin makes use of the wp_footer() function to load the JavaScript file and it’s dependancy (jQuery). Check your theme to ensure that the wp_footer() function is being called right before the closing </body> tag in your theme’s footer.php file.


For bug reports or feature requests or if you’d like to contribute to the plugin you can check everything out on Github.


April 12, 2021
Exactly what I needed. Simple, lightweight, and includes all the options for a perfect user experience. The Gutenberg team should take note.
April 6, 2021
Very nice, works well. I was looking for a plugin to use as a 'More...' button and this was actually the best I could find, even though it's supposed to be an Accordion. I simply set backgrounds to transparent and I no longer see the 'block' area of the accordion and thus it becomes a 'More...' button. The reason it's better than others, is because it is very modifiable, straightforward and it has a really nice smooth scroll. (A little extra goodie, might be if the chosen text/header title i.e. 'More...' could be changed when it is open, to 'Less...' or some such. Also... hover colour doesn't change when the accordion element is open.)
March 18, 2021
Overall awesome, so 5 star. Sometimes (with 1.3) tricky to use, and I have to move the accordion items up and down list and update, before they eventually open right one, but haven't tried so much with latest release. Also with 1.3.1 can't change color of header text alas, for some reason? So have to edit as HTML, which isn't quite ideal, but as I've said, overall awesome.
January 28, 2021
Was looking for a basic accordion block without a whole library of other blocks I wasn't going to use. Great basic design out of the box.
Read all 30 reviews

Contributors & Developers

“Accordion Blocks” is open source software. The following people have contributed to this plugin.


“Accordion Blocks” has been translated into 3 locales. Thank you to the translators for their contributions.

Translate “Accordion Blocks” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.



  • Fixed: Fixed UUID not generating properly in widget editor.


  • New: Use block API v2 with useBlockProps.
  • Fixed: Registering block with block.json file.
  • Fixed: Use BlockControls group setting for title tag toolbar.
  • Fixed: Replaced deprecated registerStore with register.
  • Fixed: Reference to which script contains translations is now correct.


  • Fixed: An issue where the global loading of scripts and styles checkbox was checked when the setting was actually off.


  • Fixed: Made turning off global loading of scripts and styles an explicit setting. You can turn off this off in Settings > Accordion Blocks.


  • Fixed: Rolled back deprecated registerStore with register change since it only applies to WordPress 5.7+.


  • New: Visual indicator of bottom of block when the block is selected.
  • New: Only load plugin assets when the page contains an accordion block.
  • Fixed: Replaced deprecated registerStore with register.


  • Added support for WordPress 5.7.
  • New method for generating uuids that should be more reliable.


  • New: Added h5 and h6 as options for title tag.
  • New: Only users with the role of Editor or Administrator can set new default settings. All users can restore settings to defaults. This lays the groundwork for the ability to make this user definable in a settings page which may come in a future release.
  • Fixed: New accordions added by Authors wouldn’t function properly.


  • Fixed: Unique IDs were not set for new accordion items for sites that didn’t already have default options stored in the database.


  • Fixed PHP error that slipped through.


  • Added support for WordPress 5.6, including fixing jQuery Migrate issues.
  • Added support for grouping accordion items.
  • Added support for nested accordion items.
  • Removed accordion settings API for getting and setting defaults in favour of use useEntityProp.


  • Fixed: Use sample content (instead of real content) to preview custom blocks styles in the editor.
  • Fixed: Bumped required version to WordPress 5.4.


  • Fixed: Resolved issue with PHP notice for not setting permission_callback in REST API.


  • Added: Support for WordPress 5.5
  • Fixed: no-js styles are now specific to the accordion item block


  • Fixed: When typing backspace on a button title, it would delete the entire accordion item instead of backspacing a character


  • Fixed: Accordion titles once again support bold and italic formats
  • Fixed: Translation should now be possible via WordPress translation site


  • Fixed: An issue where, on some sites, accordion content would not smoothly animate open, instead just appearing instantly after a short delay
  • Fixed: Duplicated accordion items now have unique IDs which should resolve the issue where clicking on the duplicate title opens the original block


  • New: An option to set default accordion item settings that will be applied to all newly created accordions. Individual accordion items can be reset to whatever is set as the defaults.
  • Fixed: Accordions not working if showing multiple posts’ content on one page. Unfortunately this will only apply to newly created accordions. Old accordions will need to be replaced to work properly.
  • Fixed: Users without the unfiltered_html permission (i.e. users with Author or lower user role) would get an “invalid content” error when viewing an accordion added by a user with the unfiltered_html permission (and vise-versa).


  • Fixed typo in plugin settings


  • Added minified versions of JS and CSS files


  • Made plugin translatable
  • Code cleanup


  • Added the ability to convert a paragraph or heading into an accordion.


  • Added the ability for the block in the editor to accept custom css classes (allows for custom registration of Block Styles)
  • Accessibility fix: Removed aria-hidden=false from closed accordions.


  • Updated readme.


  • All new plugin to support the new WordPress Gutenberg editor.