1. My shortcodes
I’ve developed multiple shortcodes for my own theme, I’m loading them in functions.php like this require_once (MY_URL . '/bartag_shortcode.php')
.
Here’s an exemplary bartag shortcode from WordPress Codex:
function bartag_func( $atts ) {
extract( shortcode_atts( array(
'foo' => 'something',
'bar' => 'something else',
), $atts ) );
return "foo = {$foo}";
}
add_shortcode( 'bartag', 'bartag_func' )
2. How to list all of them?
- I’m not even sure if I can do that, since the add_shortcode() doesn’t allow to group shortcodes, so I guess it will be pretty hard to distinguish my shortcodes from the others (from plugins, or other sources). Any ideas? I could loop trough all of shortcodes containing files using
foreach(glob('*.php') as $shortcode)
andfile_get_contents
with some regex, but when it comes to performance this is one of the dumbest ideas I’ve ever came up with. - If that’s not possible then how to display a list of all active shortcodes, so I could filter them somehow (I could add a prefix to the ones created by me and then list all shortcodes starting with this prefix).
Thanks!
Inspect the global variable
$shortcode_tags
:Output:
As you can see you get the shortcode name as key and the associated function as the value. If the function is an object you get the object with its properties and the associated function as an array.
I donât see a way to get the default attributes. Maybe per Reflection API.
The attributes are defined inside of the functions. The registered shortcode doesnât know anything about the inner workings of the associated function. And the default attributes can be ambiguous: they might be the result of another function call inside of the callback handler.
Take a look at Shortcode Reference which is a plugin that provide a list of all available shortcodes using the PHP’s Reflection API and that should give you an idea.
Other then that you can provide a UI for using your shortcodes, for example take a loot at my plugin ShortCodes UI Which creates a Dialog for each shortcode dynamically with the needed attributes.