ここは僕の冷蔵庫。後はあれして食べるだけ。

I love the frozen FOOD.

ショートコード(shortcode)を実装したとき、たまに、こんなことがありうる。

[data]あい[mark]う[/mark]えお[/data]

shortcodeの中に、shortcodeを入れる場合だ。

do_shortcode()を使う

上記のように、dataの中でshortcodeを有効かさせたい場合は、do_shortcodeを用いて対処する。

function data_shortcode( $atts, $content = null ) {
    /*
    ここで、$contentを変更したり、色々する
    */
    return '<div>' . do_shortcode($content) . '</div>';
}

のように、do_shortcodeへ shortcode変換が必要なコンテンツを渡せばいい。なお、この関数は、do_shortcodeで変換した結果を親に返す仕組みをとっているが、do_shortcodeで変換し終わった内容を、再度変換して返却するのもOKですよと。
たとえば、

function data_shortcode( $atts, $content = null ) {
    /*
    ここで、$contentを変更したり、色々する
    */
    $content = do_shortcode($content);
    /*
    もう一回、$contentを変更したりする
    */
    return $content;
}

先ほどの使い方より、少しだけ幅が広がりますかね。