嵌套相同的短代码Wordpress

时间:2014-03-18 11:45:19

标签: php wordpress

我想知道下面是否是一个有效的场景。

[column class='container-fluid']
[column class='container']
[column class='row-fluid']
[column class='span4'] One [/column]
[column class='span4'] Two [/column]
[column class='span4'] Three [/column]
[/column]
[/column]
[/column]

短代码如下。

function get_column($atts,$content = NULL){
    extract( shortcode_atts( array(
        'class' => '',
    ), $atts) );
    return '<div class="'.strip_tags($class).'">'.do_shortcode($content).'</div>';
    }
add_shortcode('column','get_column');

预期输出应为:

<div class='container-fluid petturn1'>
<div class='container'>
<div class='row-fluid'>
<div class='span4'> One </div>
<div class='span4'> Two </div>
<div class='span4'> Three </div>
</div>
</div>
</div>

和实际输出是:

<div class="container-fluid petturn1">
<div class="container"></div>
<div class="row-fluid"></div>
<div class="span4"></div>
One
</div>
<div class="span4"> Two </div>
<div class="span4"> Three </div>
[/column][/column][/column]

我不确定我们是否可以在Wordpress中进行相同短代码的这种级别嵌套。任何人都可以找到上面代码的错误。

Wordpress是否允许嵌套相同的短代码?

感谢。

1 个答案:

答案 0 :(得分:2)

限制:嵌套短代码

短代码解析器正确处理嵌套的短代码宏,前提是它们的处理函数通过递归调用do_shortcode()来支持它:

[tag-a]
   [tab-b]
      [tag-c]
   [/tag-b]
[/tag-a]

但是,如果使用短代码宏来封装另一个同名宏,则解析器将失败:

[tag-a]
   [tag-a]
   [/tag-a]
[/tag-a]

请参阅documentation