MathJax inside shortcode

时间:2017-02-21 作者:Sam

在我的自定义主题中,我包含了一些短代码。其中一个叫做[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短码未被识别,因此未被转换为数学公式。在警报短代码之外,它们被转换为公式。

有人知道这里发生了什么吗?

1 个回复
最合适的回答,由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>\';
}

相关推荐

Namespaced shortcode?

我正在改造一个旧的WP站点,该站点有许多自定义的短代码,显然由于代码当前的组织方式,这些短代码在性能方面付出了代价。当然,我可以修复优化不好的代码,使用十几个短代码,并且一天就可以完成,但我想知道如何更好地组织它们。根据WordPress\'documentation, 建议将它们放在插件中并在上初始化init. 我们可以通过这样“命名”它们来减少这个钩子中的负载吗?[com.company shortcode attr=\"attr\" prop=\"prop\"] 有人尝试过这样的解决方案吗