Ever wondered if you could use nested shortcodes in WordPress? By default, WordPress doesn’t allow you to use a shortcode within a shortcode (or in other words, nested shortcode). However, with a simple tweak on your functions.php file, you can make it happen.
Instructions:
All you have to do is add this code to your theme’s functions.php file or in a site-specific plugin:
That way you can use the following nested shortcode [link][my_text][/link].
In the snippet, we just pass $content into do_shortcode() and it works like a charm.
add_shortcode("my_text", "my_text"); function my_text() { return 'nested shortcode'; } function my_link($atts, $content = null) { extract(shortcode_atts(array( "href" => 'http://' ), $atts)); return '<a href="'.$href.'">'.do_shortcode($content).'</a>'; } add_shortcode("link", "my_link");
Note: If this is your first time adding code snippets in WordPress, then please refer to our guide on how to properly copy / paste code snippets in WordPress, so you don’t accidentally break your site.
If you liked this code snippet, please consider checking out our other articles on the site like: 62 best free WordPress blog themes or 7 best WordPress contact form plugins.
Hi Debjit Saha ,
Nice work.
if I want to use $content in both shortcode .All return value will be $content . how to do it .
Thanks for this tip but if i may ask, what use can this nested shortcode be put to? I mean in what ways and how can it be used?