【发布时间】:2012-10-22 10:54:01
【问题描述】:
我知道如果使用 do_shortcode 包装器可以嵌套短代码,但是,codex 指出:
“但是,如果使用短代码宏包含另一个同名宏,解析器将失败:”
有没有办法解决这个问题?
例如,如果我有一个短代码来制作一个 div,例如:
[div]some content in a div[/div]
我希望能够使用:
[div]
[div]a nested div[/div]
[/div]
但是使用标准的 do_shortcode 包装器会失败。
我的临时解决方法是复制短代码,并在名称后附加 _parent,但除非我创建了 div_parent1、div_parent2 等,否则我只能嵌套 1 级...
【问题讨论】:
-
您要查找的内容记录在 wordpress 文档中:codex.wordpress.org/Shortcode_API#Nested_Shortcodes
-
@hakre 你能指出其中的哪一行显示了它吗 - 从我所见,它只说明了我在问题中引用的内容,即由于无法嵌套同名短代码上下文无关的正则表达式解析器的限制。
-
好吧,阅读:“短代码解析器正确处理嵌套的短代码宏,只要它们的处理函数通过递归调用
do_shortcode()来支持它” - 就这样做。在您自己的短代码挂钩中调用do_shortcode()。这就是它在 Wordpress 中的完成方式。 -- 顺便说一下,这是“嵌套短代码”部分的第一行。 -
嗯,对,误读了你。然而,这个问题是已知的,大约在两年前就有报道:core.trac.wordpress.org/ticket/14481
-
@hakre 感谢您的输入 - 对于这个特殊的简码,1 级嵌套应该足够了,所以我将坚持使用附加了 _parent 的重复简码。这应该可以为我节省一些处理资源和开发时间。