到目前为止,我找到的部分解决方案是在初始调用中转义括号,然后替换do_foo_shortcode
作用
function do_foo_shortcode($atts, $content = null) {
extract(shortcode_atts(array(
\'bar\' => \'\',
), $atts, \'foo\'));
$bar = str_replace("[", "[", $bar);
$bar = str_replace("]", "]", $bar);
$bar = do_shortcode($bar);
$content = do_shortcode($content);
return "$bar - $content";
}
并称之为
[foo bar="[video src=video-source.mp4]"]Hello world![/foo]
当然,这是一个不完整的解决方案,因为它不允许超过1级的嵌套,并且引号不能在内部短代码中使用。更不用说写起来有多复杂了。