WP-ShowHide
WP-ShowHide
Description
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.
Features
- One shortcode,
[showhide], usable any number of times in a post or page - A Show/Hide block for the block editor, holding the content it hides as ordinary blocks and rendering exactly what the shortcode renders
- A button rather than a link, with
aria-expandedandaria-controls, so the toggle works from the keyboard and reads correctly to a screen reader - Labels that count the words they are hiding
- No jQuery, and no script at all on a page that uses neither the shortcode nor the block
- Custom DOM events on every toggle, for themes that want to react to one
Donations
I 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.
Usage
- By default, content within the showhide shortcode will be hidden.
- Example:
[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.
- Example:
[showhide hidden="no"]Press release content goes in here.[/showhide]
Block editor
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.
- You can style the content via CSS that is generated by the plugin. Here is a sample of the generated HTML. Note that pressrelease is the default type.
<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>
- With the example above, here are the following styles you can use in your CSS:
.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 { }
- Every toggle fires three events on the
.sh-linkelement, and all three bubble, so one listener on the document covers every toggle on the page:sh-link:morewhen a toggle opens,sh-link:lesswhen it closes, andsh-link:toggleon both.
Installation
- Install and activate the plugin.
- Wrap the content you want hidden in
[showhide]and[/showhide], or add the Show/Hide block in the editor and put the content inside it.
There is nothing to configure and no settings screen. Every choice the plugin offers is an attribute of the shortcode or a control in the block’s sidebar, so two toggles in the same post can behave differently.
Screenshots

Four toggles on one page, three of them closed: the default, one that starts open, and two more whose ids do not collide

The same page with a toggle opened

The Show/Hide block in the editor, holding the content it hides as ordinary blocks so it stays editable, with the sidebar carrying the same choices the shortcode attributes carry
Faq
Pass more_text and less_text on the shortcode. %s in either one is replaced with the number of words being hidden, and a label with no %s in it is used exactly as written.
Yes. It is two rules and it is enqueued under the handle wp-showhide, so dequeue it from your theme:
add_action( 'wp_enqueue_scripts', function () {
wp_dequeue_style( 'wp-showhide' );
}, 20 );
The toggle keeps working; the button will simply look like your theme’s buttons instead of like a text link.
It no longer does. Since 2.0.0 the first toggle of a given type in a post keeps the ID it has always had and later ones are suffixed -2, -3 and so on. Style by class rather than by ID if you use the same type more than once.
One row, and it is tiny. wp_showhide_version records the version last run so that an upgrade knows what it is upgrading from. There is no settings row, because there are no settings. Deleting the plugin from the Plugins screen removes the row, on a single site and on every site of a network.
Reviews
Works great with WP 6.8.1
By Dave Smith (sophoservices) on July 3, 2025
Shows and hides text just like it says it does! Thank you!
Needs Update
By vivatword on April 13, 2025
Thanks for the free plugin and support.
it doesn't work woth the latest wp.
the hided side can not be seen after click the show.
it is only active when logged in to wp-admin.
please update it.
Needs documentation
By delboy007 on February 9, 2022
Great plugin
By Rollaz on January 30, 2021
WP ShowHide is a great plugin,
By thetravelgal on December 23, 2020
great idea but doesn't work
By pentagramwookie on September 20, 2020
Nice plugin
By Doeye Hof (Doeye) on August 17, 2020
Really Nice Job.
By José (guertzen) on July 18, 2020
Fantastic
By broudef on June 22, 2020
关于CSS样式修改
By iacg on May 8, 2020
Changelog
3.0.0
- BREAKING: Requires WordPress 6.8 and PHP 8.2, up from 6.0 and 7.4.
- BREAKING: Removed the
showhide_scripts(),showhide_js()andshowhide_shortcode()global functions. They were internals; the plugin registers its own shortcode and assets. - BREAKING: The
ShowHideandShowHide_Templateclasses are nowWP_ShowHideandWP_ShowHide_Template. - NEW: Added a Show/Hide block for the block editor, which holds the content it hides as ordinary blocks. The
[showhide]shortcode is unchanged and still supported — it is not deprecated, posts using it need no editing, and the two render the same markup. - NEW: Restructured into
includes/, behind theWP_ShowHide,WP_ShowHide_TemplateandWP_ShowHide_Optionsclasses. - NEW: Added the
wp_showhide_versionrow, and anuninstall.phpthat deletes it on a single site and across a network. - NEW: The toggle script and the stylesheet are now files,
js/wp-showhide.jsandcss/wp-showhide.css, so a browser caches them once instead of reading them inline on every page. - NEW: Added a PHPUnit and vitest test suite, and GitHub Actions CI.
- CHANGED: Both elements the shortcode renders now carry a
wp-showhideclass alongside the classes they have always had. Nothing was renamed or removed, so existing theme CSS is unaffected. - FIXED:
hidden="No"left the content collapsed instead of expanding it. The attribute is matched case insensitively now, so any spelling ofnoworks. - FIXED: Requesting
wp-showhide.phpdirectly ran it outside WordPress instead of exiting.