

Four toggles on one page, three of them closed: the default, one that starts open, and two more whose ids do not collide
WP-ShowHide hides part of a post behind a button, so something long — a press release, a changelog, a spoiler — does not fill the page until a reader asks for it. The button says how many words it is hiding, which is what Engadget does with their press releases. Example usage: [showhide type="pressrelease"]Press Release goes in here.[/showhide]
There is nothing to configure and no settings screen. Every choice the plugin offers is an attribute of the shortcode that makes it, so two toggles in the same post can behave differently.
[showhide], usable any number of times in a post or pagearia-expanded and aria-controls, so the toggle works from the keyboard and reads correctly to a screen readerI spent most of my free time creating, updating, maintaining and supporting these plugins, if you really love my plugins and could spare me a couple of bucks, I will really appreciate it. If not feel free to use it without any obligations.
[showhide]Press release content goes in here.[/showhide]Default Values: [showhide type="pressrelease" more_text="Show Press Release (%s More Words)" less_text="Hide Press Release (%s Less Words)" hidden="yes"]
You can have multiple showhide content within a post or a page, just by having a new type.
Example: [showhide type="links" more_text="Show Links (%s More Words)" less_text="Hide Links (%s Less Words)"]Links will go in here.[/showhide]
If you want to set the default visibility to display.
[showhide hidden="no"]Press release content goes in here.[/showhide]There is a Show/Hide block too, filed under Text in the inserter. It holds the content it hides as ordinary blocks — paragraphs, images, anything — so that content is written and edited in place instead of being typed into a field as markup, and it stays visible while you are editing. The Show/Hide panel in the sidebar carries the same four choices the shortcode attributes carry: the type, the two button labels, and whether it starts hidden.
The shortcode is unchanged and still supported. It is not deprecated, posts that use it need no editing, the block and the shortcode render the same markup, and one post can hold both.
<div id="pressrelease-link-1" class="wp-showhide sh-link pressrelease-link sh-hide">
<button type="button" class="sh-toggle" aria-expanded="false" aria-controls="pressrelease-content-1"
data-sh-more="Show Press Release (4 More Words)"
data-sh-less="Hide Press Release (4 Less Words)">Show Press Release (4 More Words)</button>
</div>
<div id="pressrelease-content-1" class="wp-showhide sh-content pressrelease-content sh-hide" hidden>Content</div>
.sh-link { }
.sh-toggle { }
.sh-content { }
.pressrelease-link { }
.pressrelease-link.sh-hide .sh-toggle { }
.pressrelease-link.sh-show .sh-toggle { }
.pressrelease-content { }
.pressrelease-content.sh-hide { }
.pressrelease-content.sh-show { }
.sh-link element, and all three bubble, so one listener on the document covers every toggle on the page: sh-link:more when a toggle opens, sh-link:less when it closes, and sh-link:toggle on both.