Suppose that you have two shortcodes,

1. the [RED]content[/RED] – will change the color of the text to red.

1. the [DOTTED]content[/DOTTED] – will add dotted underline to the text.

{code}function shortcode_red($atts, $content){
return ‘<span style=”color:red”>’.$content.'</span>’;
}

add_shortcode(‘RED’, ‘shortcode_red’);

function shortcode_dotted($atts, $content){
return ‘<span style=”border-bottom:dotted gray 1px”>’.$content.'</span>’;
}

add_shortcode(‘DOTTED’, ‘shortcode_dotted’);{/code}

 

Adding “[RED]this is red[/RED] [DOTTED]this is dotted[/DOTTED]” to the post content, the result is fine. However, when placing the ” [DOTTED]this is dotted[/DOTTED]” inside [RED][/RED] as in “[RED][DOTTED]this is dotted[/DOTTED][/RED]”, will result to a problem. The [DOTTED] shortcode won’t be executed.

 

To fix this, on the return statement, add do_shortcode() function.

{code}function shortcode_red($atts, $content){
return do_shortcode(‘<span style=”color:red”>’.$content.'</span>’);
}

add_shortcode(‘RED’, ‘shortcode_red’);

function shortcode_dotted($atts, $content){
return do_shortcode(‘<span style=”border-bottom:dotted gray 1px”>’.$content.'</span>’);
}

add_shortcode(‘DOTTED’, ‘shortcode_dotted’);{/code}

 

Leave a Reply