How to add a closing shortcode to Wordpress template file?

Ian picture Ian · Jul 27, 2012 · Viewed 8.6k times · Source

Okay, so you can add shortcodes to WP template files like:

<?php echo do_shortcode('[my_awesome_shortcode]'); ?>

but what if the shortcode is intended to wrap around content like this:

[my_awesome_shortcode]
Hey, this is the content within the awesome shortcode.
[/my_awesome_shortcode]

I'm a bit unsure how to put that into a template file.

Answer

internet-nico picture internet-nico · Jan 26, 2014

The solution that worked for me was to combine shortcodes into a single string, so

<?php echo do_shortcode('[my_awesome_shortcode]<h1>Hello world</h1>[/my_awesome_shortcode]'); ?>

will work!

If you have a long chain of shortcode commands you want to execute, create a separate string for them like this

$shortcodes = '[row]';
    $shortcodes .= '[column width="2/3"]';
        $shortcodes .= 'Content';
    $shortcodes .= '[/column]';
    $shortcodes .= '[column width="1/3"]';
        $shortcodes .= 'More Content';
    $shortcodes .= '[/column]';
$shortcodes .= '[/row]';

Then execute the entire thing like this

<?php echo do_shortcode($shortcodes); ?>