Categories

Hide Broken Shortcodes

Author: Scott Reilly
Version: 1.9.3
First released: 2010-01-05
Last update: 2021-04-18
Compatibility: WP 2.5 – 5.7.2
Download: [ zip ]
Description:

Prevent broken shortcodes from appearing in posts and pages.

Extended Description

By default in WordPress, if the plugin that provides the functionality to handle any given shortcode is disabled, or if a shortcode is improperly defined in the content (such as with a typo), then the shortcode in question will appear on the site in its entirety, unprocessed by WordPress. At best this reveals unsightly code-like text to visitors and at worst can potentially expose information not intended to be seen by visitors.

This plugin prevents unhandled shortcodes from appearing in the content of a post or page. If the shortcode is of the self-closing variety, then the shortcode tag and its attributes are not displayed and nothing is shown in their place. If the shortcode is of the enclosing variety (an opening and closing tag bookend some text or markup), then the text that is being enclosed will be shown, but the shortcode tag and attributes that surround the text will not be displayed.

See the Filters section for more customization tips.

Links: Plugin Homepage | Plugin Directory Page | GitHub | Author Homepage

Hooks

The plugin is further customizable via two filters. Typically, code making use of filters should ideally be put into a mu-plugin or site-specific plugin (which is beyond the scope of this readme to explain).

hide_broken_shortcode (filter)

The ‘hide_broken_shortcode’ filter allows you to customize what, if anything, gets displayed when a broken shortcode is encountered. Your hooking function can be sent 3 arguments:

Arguments :

  • $default (string): The default display text (what the plugin would display by default)
  • $shortcode (string): The name of the shortcode
  • The text bookended by opening and closing broken shortcodes, if present

Example:

/**
 * Don't show broken shortcodes or the content they wrap.
 *
 * @param string $default   The text to display in place of the broken shortcode.
 * @param string $shortcode The name of the shortcode.
 * @param array  $m         The regex match array for the shortcode.
 * @return string
 */
function hbs_handler( $default, $shortcode, $m ) {
    return ''; // Don't show the shortcode or text bookended by the shortcode
}
add_filter( 'hide_broken_shortcode', 'hbs_handler', 10, 3 );

hide_broken_shortcodes_filters (filter)

The ‘hide_broken_shortcodes_filters’ filter allows you to customize what filters to hook to find text with potential broken shortcodes. The three default filters are ‘the_content’, ‘the_excerpt’, and ‘widget_text’. Your hooking function will only be sent one argument: the array of filters.

Example:

/**
 * Make Hide Broken Shortcodes also filter 'the_title'.
 *
 * @param  array $filters_array The filters the plugin will handle.
 * @return array
 */
function hbs_filter( $filters_array ) {
    $filters_array[] = 'the_title'; // Assuming you've activated shortcode support in post titles
    return $filters_array;
}
add_filter( 'hide_broken_shortcodes_filters', 'hbs_filter' );

Find out more at the plugin’s WordPress Plugin Repository page.

Installation

  1. Install via the built-in WordPress plugin installer. Or download and unzip hide-broken-shortcodes.zip inside the plugins directory for your site (typically wp-content/plugins/)
  2. Activate the plugin through the ‘Plugins’ admin menu in WordPress
  3. Optionally filter ‘hide_broken_shortcode’ or ‘hide_broken_shortcodes_filters’ if you want to customize the behavior of the plugin

Release Log

1.9.3 (2021-04-18)

  • Change: Note compatibility through WP 5.7+
  • Change: Update copyright date (2021)

1.9.2 (2020-09-06)

  • Change: Restructure unit test file structure
    • New: Create new subdirectory phpunit/ to house all files related to unit testing
    • Change: Move bin/ to phpunit/bin/
    • Change: Move tests/bootstrap.php to phpunit/
    • Change: Move tests/ to phpunit/tests/
    • Change: Rename phpunit.xml to phpunit.xml.dist per best practices
  • Change: Note compatibility through WP 5.5+

1.9.1 (2020-08-04)

  • New: Add TODO.md and move existing TODO list from top of main plugin file into it (and add items to it)
  • Change: Add inline documentation for hooks
  • Change: Use HTTPS for link to WP SVN repository in bin script for configuring unit tests
  • Change: Note compatibility through WP 5.4+
  • Change: Update links to coffee2code.com to be HTTPS
  • Change: Tweak inline documentation formatting
  • Unit tests:
    • New: Add test for get_shortcode_regex()
    • New: Add test for class name
    • Change: Remove unnecessary unregistering of hooks

Copyright & Disclaimer

Copyright © 2010-2021 by Scott Reilly (aka coffee2code)

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

Discussion / Support

Have any questions, comments, or suggestions? Please provide them via the plugin’s WordPress.org support forum. I’ll do my best to reply in a timely fashion and help as best I can.

Unfortunately, I cannot provide guaranteed support, nor do I provide support via any other means.

Was this plugin useful useful to you? Consider giving it a rating. If you’re inclined to give it a poor rating, please first post to the support forum to give me a chance to address or explain the situation.

One reply on “Hide Broken Shortcodes”