在我的自定义主题中,我包含了一些短代码。其中一个叫做[alert]...[/alert]
并生成引导警报框。它接受类型(警告、危险、信息或成功)、标题和主要内容。输出为简单返回:
return \'<div class="alert alert-\' . $atts[\'type\'] . \'" role="alert"><p class="alert-title">\' . $atts[\'title\'] . \'</p>\' . $content . \'</div>\';
我需要用其中一个警报来包装一个重要的数学公式,所以我写道:
[alert type="warning" title="Important Formula"][latex]a^2 + b^2 = c^2[/latex][/alert]
但这会产生:
<div class="alert alert-warning" role="alert"><p class="alert-title">Important Formula</p>[latex]a^2 + b^2 = c^2[/latex]</div>
因此,mathjax latex短码未被识别,因此未被转换为数学公式。在警报短代码之外,它们被转换为公式。
有人知道这里发生了什么吗?
最合适的回答,由SO网友:David Lee 整理而成
您不能在不会自动嵌套的短代码中调用短代码,您需要使用do_shortcode($content)
这样(我假设您的短代码的名称):
function alert_shortcode( $atts, $content = null ) {
return \'<div class="alert alert-\' . $atts[\'type\'] . \'" role="alert"><p class="alert-title">\' . $atts[\'title\'] . \'</p>\' . do_shortcode($content) . \'</div>\';
}