X

How to Create Nested Shortcodes in WordPress Without a Plugin

Snippets by IsItWP

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.

Comments   Leave a Reply

  1. Hi Debjit Saha ,
    Nice work.
    if I want to use $content in both shortcode .All return value will be $content . how to do it .

  2. 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?

Add a Comment

We're glad you have chosen to leave a comment. Please keep in mind that all comments are moderated according to our privacy policy, and all links are nofollow. Do NOT use keywords in the name field. Let's have a personal and meaningful conversation.

WordPress Launch Checklist

The Ultimate WordPress Launch Checklist

We've compiled all the essential checklist items for your next WordPress website launch into one handy ebook.
Yes, Send Me the Free eBook!